为什么在perl中打印两次?

时间:2012-06-21 15:16:05

标签: perl printing

所以我希望有人可以解释为什么当我运行以下代码时,它会在行的开头和结尾打印“.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

有人可以向我解释为什么会发生这种情况和/或如何解决这个问题?谢谢。

2 个答案:

答案 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