File::Grep

サンプルのテキストファイル

a.txt

 a
 b
 c x
 a

b.txt

 a
 b

c.txt

 b

fgrep

 
 use File::Grep qw(fgrep);
 use Data::Dumper;
 
 @ret = fgrep {/a/} glob './*.txt';
 print Dumper @ret;
 $VAR1 = {
     'count' => 2,
     'matches' => {
        '4' => 'a
 ',
        '1' => 'a
 '
         },
     'filename' => './a.txt'
   };
 $VAR2 = {
     'count' => 1,
     'matches' => {
        '1' => 'a
 '
         },
     'filename' => './b.txt'
   };
 $VAR3 = {
     'count' => 0,
     'matches' => {},
     'filename' => './c.txt'
   };

fgrep()をスカラーで受けると($ret=fgrep {...} ...)、真偽値(0か1)が入る。

fgrep {($file,$pos,$line)=@_}

条件式の中でファイルの通し番号や行番号を取り出せる。

 use File::Grep qw(fgrep);
 
 @ret = fgrep {($file,$pos,$line)=@_;print "$file,$pos,$line";} glob './*.txt';
 0,1,a
 0,2,b
 0,3,c x
 0,4,a
 1,1,a
 1,2,b

$fileはgrepしたファイルの、0から始まる通し番号をあらわす。

参考

http://search.cpan.org/~mneylon/File-Grep-0.02/Grep.pm


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS