Intereting Posts

Как получить имя файла, если определенное регулярное выражение присутствует в файле в Perl

В каталоге, содержащем много файлов, если в файле было найдено определенное регулярное выражение (или формат), я хотел бы получить это имя файла

Пример:

  1. Если слово rama найдено в файле ramayana, напечатайте имя файла "ramayana"

  2. если файл содержит определенный формат что-то вроде « (TEXT - NUMBERS) » в имени файла, называемом table, напечатайте эту таблицу имен файлов в оболочке, которая была довольно простой, что-то вроде

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

    но как это сделать в perl

Также приветствуются предложения по полезным модулям CPAN.

Возможно, я пропустил очко, но если ваш первоначальный запрос в основном такой же:

 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,''; }