经过几天阅读 StackExchange 帖子和无休止的反复试验后,我决定请求全世界的帮助。
我存储了以下多行字符串$received_data
,我只需要打印每行的传输速度值。
这是我的代码片段:
my $received_data1 = 'Transfer Speed=81.9252432155658
2013/03/25 19:51:43,915|INFO|### STATUS: OK
2013/03/25 19:51:43,915|INFO|### DATA: Transfer Speed= 83.924363456758
2013/03/25 19:51:45,927|INFO|Checking FTP upload status...
2013/03/25 19:51:45,927|INFO|### INFO: Collect Throughput.
2013/03/25 19:51:45,927|INFO|Checking FTP upload status...
2013/03/25 19:51:45,927|INFO|### DATA: Transfer Speed=67.83685237005002';
my $regex = qr/Transfer Speed=([0-9]{1,}[.][0-9]{1,}[^\n])/m;
if($received_data1 =~ $regex){
#$received_data1 =~ s/$received_dat/$regex/gm;
print $1;
}else{
print "nothingFound";
}
从print $1
,我只能获得第一个传输速度,即81.9252432155658,而不能获得其他传输速度。我传递了修饰符/gm
,让 Perl 知道输入字符串是多行的,并在找到第一个匹配项后继续搜索。正则表达式在$regex
这个网站上工作得很好:http: //www.solmetra.com/scripts/regex/index.php我得到了一个匹配值的数组。
获取数组就足够了,因为我可以循环遍历数组并将值打印到文件或控制台上。
我将不胜感激任何帮助。
PS:我已经阅读了大多数其他 Stack Exchange 帖子,但它们没有帮助。我希望我没有重复任何问题。如果有符合我要求的问题,我会很感激这个链接。