我试图在文件夹中的每个 txt 文件中找到字符串“victory”第一次出现的行。对于文件中的每个第一个“胜利”,我想将该行中的数字保存到 @num 并将文件名保存到 @filename
示例:对于以以下行开头的文件 a.txt:“lalala 胜利 123456”-> $num[$i]=123456 和 $filename[$i]="a.txt"
ARGV 保存所有文件名。我的问题是我试图逐行进行,但我不知道自己做错了什么。还有一件事 - 我怎样才能在最后一个文件中获得最后一次出现的“胜利”?
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";
}
非常感谢你!:)