open(LOGFILE,"<sim_success.log") or die("could not open file");
while (<LOGFILE>){
$line = $_;
chomp($line);
my @design = grep (/Design:/, $line);
push (@final, @design);
}
print $final[0];
close LOGFILE;
设计:D:\ Test \ Example \ Example1_wrk ....
如何在perl中的var中保存“Example_wrk”?
答案 0 :(得分:0)
这是一个疯狂的猜测。我想你想要的是从那行日志文件中捕获文件名。
use strict;
use warnings;
my @final;
open my $fh, '<', 'sim_success.log' or die "could not open file: $!";
while (my $line = <$fh>) {
chomp $line;
if ( $line =~ m/Design: (.+)$/ ) {
push @final, $1;
}
}
print $final[0]; # will print only the first one
close $fh;
让我们看看我做了什么。很多这方面已经在melpomene对这个问题的评论中得到了解释。我会重申其中一些。
use strict
和use warnings
!它们可以帮助您发现错误。grep
没有按你的想法行事。它用于查找符合条件的列表中的内容。您的列表只有一个项目。这条线。m//
运算符。()
,它可以捕获所有内容$1
中,我们可以push
到数组程序完成后,数组@final
可能包含一个或多个匹配项。如果多个行匹配,则数组中有更多条目。