Perlのファイルに特定の正規表現がある場合のファイル名の取得方法

Perlのファイルに特定の正規表現がある場合のファイル名の取得方法

多くのファイルがあるディレクトリで、特定の正規表現(または形式)がファイルに存在する場合は、ファイル名を取得したいと思います。

例:

  1. ramayanaというファイルに「rama」という単語が見つかった場合は、ファイル名「ramayana」を印刷します。

  2. ファイル名がtableのファイル名に ""などの特定の形式が含まれている場合、シェルは(TEXT - NUMBERS)ファイル名テーブルを印刷します。これは非常に簡単です。

    grep "mytext" * | cut -d':' -f1 | uniq

    しかし、Perlでこれを行う方法

有用なCPANモジュールの提案も高く評価されます。

答え1

多分私は少し逃したかもしれませんが、元の要件が基本的に次のような場合:

grep -l "mytext" *

これにより、perl対応する内容は次のように作成できます。

perl -ne 'if(/mytext/){print"$ARGV\n";close ARGV}' *

ノート読者の注意:次のコードはモデレーターのコメントに基づいて更新され、元の質問と完全に互換性がありません。

#!/usr/bin/perl

@list_code=qw{ over 100 elements here };
@original=@ARGV;

foreach $ele (@list_code) {
  @ARGV=@original;
  @found=();
  while (<>) {
    if (/\Q$ele\E/) {
      push @found,$ARGV;
      close ARGV;
    }
  }
  print "$ele found in ",scalar @found," files : \n",join "\n",@found,'';
}

関連情報