フォルダー内の各txtファイルで、文字列「勝利」が最初に出現する行を見つけようとしています。ファイル内の最初の「勝利」ごとに、その行の番号を @num に、ファイル名を @filename に保存したいと思います
例: a.txt という行で始まるファイルの場合: "lalala Victory 123456" -> $num[$i]=123456 and $filename[$i]="a.txt"
ARGV はすべてのファイル名を保持します。私の問題は、行ごとに行こうとしていて、何が間違っているのかわからないことです。もう1つ-最後のファイルで「勝利」の最後の出現を取得するにはどうすればよいですか??
use strict;
use warnings;
use File::Find;
my $dir = "D:/New folder";
find(sub { if (-f && /\.txt$/) { push @ARGV, $File::Find::name } }, $dir); $^I = ".bak";
my $argvv;
my $counter=0;
my $prev_arg=0;
my $line = 0;
my @filename=0;
my @num=0;
my $i = 0;
foreach $argvv (@ARGV)
{
#open $line, $argvv or die "Could not open file: $!";
my $line = IN
while (<$line>)
{
if (/victory/)
{
$line = s/[^0-9]//g;
$first_bit[$i] = $line;
$filename[$i]=$argvv;
$i++;
last;
}
}
close $line;
}
for ($i=0; $i<3; $i++)
{
print $filename[$i]." ".$num[$i]."\n";
}
どうもありがとうございました!:)