新的perl ...有chomp问题

时间:2011-11-07 03:53:06

标签: perl

我正在尝试学习perl编程并使用它来阅读比赛中的文件;

#!/usr/local/bin/perl
use warnings;

open(FILE, <~/source/test.txt>);
@array = <FILE>;
$number = shift @array;

while($number--) {
    chomp($key = shift @array);
    chomp($message = shift @array);

    print "Key: $key";
    print "Message: $message";
}
print "\n";
close(FILE);

该文件包含一个数字N,然后有2 * N行,其中包含有多少个键/消息对。

但是当我执行这个程序时,它只打印出最后一条“消息”而没有其他内容......它不会打印任何其他内容。如果我取下它的按钮它按预期工作,但是那里的扼流圈只是切断了一切...任何想法为什么?

//编辑:删除-w

1 个答案:

答案 0 :(得分:8)

您正在unix框中读取DOS / Win文本文件。使用chomp,您将删除“CRLF”的“LF”,但保留“CR”,导致所有行显示在另一个之上。

#!/usr/local/bin/perl -w
use strict;   # Do use this!
use warnings;

open(my $fh, '<', "$ENV{HOME}/source/test.txt") or die $!;
my @array = <$fh>;
s/\s+\z// for @array;  # Universal chomp

my $number = shift(@array);
while ($number--) {
   my $key     = shift(@array);
   my $message = shift(@array);

   print "Key: $key\n";
   print "Message: $message\n";
}