次の形式の画像ヘッダー ファイルのリストを含むディレクトリがあります。
image1.hd
image2.hd
image3.hd
image4.hd
Image type:=4
ディレクトリで正規表現を検索し、このパターンが最初に出現するファイル番号を見つけたいと考えています。これは、bash でいくつかのパイプを使用して簡単に実行できます。
grep -l 'Image type:=4' image*.hd | sed ' s/.*image\(.*\).hd/\1/' | head -n1
この場合は 1 を返します。
このパターン マッチは、perl スクリプトで使用されます。私は私が使用できることを知っています
my $number = `grep -l 'Image type:=4' image*.hd | sed ' s/.*image\(.*\).hd/\1/' | head -n1`
しかし、そのような場合に純粋な perl を使用する方が望ましいでしょうか? これは、perl を使用して思いついた最高のものです。それは非常に面倒です:
my $tmp;
#want to find the planar study in current study
foreach (glob "$DIR/image*.hd"){
$tmp = $_;
open FILE, "<", "$_" or die $!;
while (<FILE>)
{
if (/Image type:=4/){
$tmp =~ s/.*image(\d+).hd/$1/;
}
}
close FILE;
last;
}
print "$tmp\n";
これは、1 の目的の出力も返します。これを行うより効果的な方法はありますか?