【发布时间】:2012-05-24 13:56:28
【问题描述】:
自从我成为 Perling 以来已经有几个月了,但我完全不知道为什么会发生这种情况......
如果重要的话,我在 OSX 上。
我正在尝试转换文件中的行,例如
08/03/2011 01:00 PDT,1.11
进入标准输出行,如
XXX, 20120803, 0100, KWH, 0.2809, A, YYY
由于我正在读取一个文件,我想在读入每一行后chomp。但是,当我chomp 时,我发现我的打印变得一团糟。当我不chomp 时,打印很好(除了额外的换行符......)。这是怎么回事?
while(<SOURCE>) {
chomp;
my @tokens = split(' |,'); # @tokens now [08/03/2011, 01:00, PDT, 1.11]
my $converted_date = convertDate($tokens[0]);
my $converted_time = convertTime($tokens[1]);
print<<EOF;
$XXX, $converted_date, $converted_time, KWH, $tokens[3], A, YYY
EOF
}
chomp 在那里调用,输出都混淆了:
, A, YYY10803, 0100, KWH, 1.11
如果没有 chomp 调用,它至少会以正确的顺序打印,但会有额外的新行:
XXX, 20110803, 0100, 千瓦时, 1.11 , A, YYY
请注意,chomp 在那里,就像它覆盖了第一行“顶部”的换行符。我已经添加了$|=1; autoflush,但不知道这里还能做什么。
想法?并提前感谢....
【问题讨论】:
-
你从哪里得到数据文件?它可能有奇怪的行尾字符吗?