1

したがって、次のコードを実行すると、行頭と行末の両方に「.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

なぜこれが起こっているのか、および/またはそれを修正する方法を誰かに説明してもらえますか? ありがとうございました。

4

2 に答える 2

5

リストの先頭に空の要素があります。単にshift @logf

于 2012-06-21T15:18:45.980 に答える
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
于 2012-06-21T15:47:05.240 に答える