所以我希望有人能解释为什么当我运行下面的代码时,它会在行的开始和结尾都打印“.link/output”。我试图只在行结束时才打印它。有什么想法吗?为什么在perl中打印两次?
#!/usr/local/bin/perl
use warnings;
use strict;
my $logfiles = $ARGV[0]; #file containing the list of all the log file names
my @logf =();
my $i;
open (F2, "<", $logfiles);
while(<F2>){
@logf = $_;
foreach $i(@logf){
print $_.".link/output";
}
}
close F2;
因此,举例来说,如果我读的文件是:
cat
dog
我想看看:
cat.link/output
dog.link/output
但isntead我越来越:
.link/outputcat.link/output
.link/outputdog.link/output
有人请向我解释为什么th正在发生和/或如何解决它?谢谢。
我认为你的清单中的空元素。它将“.link/output”连接到一个空字符串。 – PinkElephantsOnParade
你能确认你的'while'和'foreach'循环正在执行预期的次数吗? –
为什么给数组分配一个标量,然后尝试循环数组?它只能包含一个值,所以不需要循环。而在循环中,你甚至不使用循环变量'$ i',反正你使用'$ _'。 '@logf = $ _;对于$ i(@logf){print $ _。 ......“所有这些都是完全多余的。你可能只是写'print“$ _。link/output \ n”,而' –
TLP