【发布时间】:2013-10-10 09:26:22
【问题描述】:
我有一个包含数百个文本文件的文件夹。每个文件都有相同的格式,例如名称为ATextFile1.txt 的文件读取
ATextFile1.txt 09 Oct 2013
1
2
3
4
...
我有一个简化的 Perl 脚本,它应该读取文件并在终端窗口中打印出来:
#!/usr/bin/Perl
use warnings;
use strict;
my $fileName = shift(@ARGV);
open(my $INFILE, "<:encoding(UTF-8)", $fileName) || die("Cannot open $fileName: $!.\n");
foreach (<$INFILE>){
print("$_"); # Uses the newline character from the file
}
当我在由生成ATextFile1.txt 的 Windows 版本的程序生成的文件上使用此脚本时,我的输出完全符合我的预期(作为文本文件的内容),但是,当我运行此Mac版文件生成程序生成的文件的脚本,输出如下:
2016tFile1.txt 09 Oct 2013
经过一些测试,它似乎只打印文本的第一行,其中前 4 个字符被正则表达式中可以表示为 /[0-9][0-9]16/ 的内容覆盖。如果在我的 Perl 脚本中,我将输出语句替换为 print("\t$_");,我会在 STDOUT 中打印以下行:
2016 ATextFile1.txt 09 Oct 2013
这些文件中的每一个都可以使用任何标准文本编辑器正常读取,但由于某种原因,我的 Perl 脚本似乎无法正确读取和写入文件。任何帮助将不胜感激(我希望我很明显错过了一些东西)。提前致谢!
【问题讨论】:
-
use Data::Dumper; $Data::Dumper::Useqq=1; print Dumper $_; -
这似乎是朝着正确方向迈出的一步。我得到我的输出类型有什么原因吗?我真的需要开始阅读中级 Perl,因为我知道
Data::Dumper很早就讨论过了。