我试图逐行读取和解析文件,但是文件末尾有一些分隔符导致了奇怪的行为。
以下是我正在阅读的文件行:
20111129 AMEX BHO OTCBB BHODD
20111129 AMEX LCAPA NASDAQ LMCA
阅读它的代码很简单:
my(@line) = <INFO>;
foreach $line(@line) {
chomp( $line );
my @vals = split('\t', $line);
my $date = $vals[0];
my $old_exch = $vals[1];
my $old_symb = $vals[2];
my $new_exch = $vals[3];
my $new_symb = $vals[4];
print "0> date '$date'\n";
print "1> old Exch '$old_exch'\n";
print "2> old symb '$old_symb'\n";
print "3> new Exch '$new_exch'\n";
print "4> new symb '$new_symb'\n";
输出如下所示:
0> date '20111129'
1> old Exch 'AMEX'
2> old symb 'BHO'
3> new Exch 'OTCBB'
'> new symb 'BHODD
所以在每一行的末尾都会出现一个字符,导致尾部'在行的开头打印,擦除应该在那里打印的4。它就像一个字符,重置打印应该发生在线的开头。有没有办法'扼杀'这个流氓角色?或者我的代码中可能存在某种错误,但我还有其他类似的东西......
非常感谢In Advance!
唐
答案 0 :(得分:4)
该文件具有Windows行结尾。流氓角色是“\ r”,您可以通过正则表达式删除它:
s/\r//;
或者,您可以在打开文件时指定:crlf
图层。