1

次の形式の画像ヘッダー ファイルのリストを含むディレクトリがあります。

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 の目的の出力も返します。これを行うより効果的な方法はありますか?

4

1 に答える 1