所以我希望有人可以解释为什么当我运行以下代码时,它会在行的开头和结尾打印“.link / output”。我试图让它只在行尾打印。有什么想法吗?
#!/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
但是我得到了:
.link/outputcat.link/output
.link/outputdog.link/output
有人可以向我解释为什么会发生这种情况和/或如何解决这个问题?谢谢。
答案 0 :(得分:5)
列表开头有一个空元素。只需shift @logf
答案 1 :(得分:3)
我没看到@logf
做了什么。你能不能这样做:
#!/usr/bin/env perl
use warnings;
use strict;
my $logfiles = $ARGV[0]; #file containing the list of all the log file names
#open(my $f2, "<", $logfiles);
# FOR TESTING, use above in your code
my $f2 = \*DATA;
# ===========
while(<$f2>){
chomp;
print "$_.link/output\n";
}
__DATA__
cat
dog