我有一个perl脚本,它在文本文件中计算doublets,并总结结果。这在我的模拟数据集(a.txt)上工作正常。这个文件是一个简短的字母列表。我的真实数据(winningStreak.txt)要长得多,并且perl脚本无法读取文件。
alexhuhn@Ubuntu-MacPro:~/Desktop/Analysis$ perl doublet.pl a.txt
Name a file to save the results in
b.txt
alexhuhn@Ubuntu-MacPro:~/Desktop/Analysis$ perl doublet.pl winningStreak.txt
Name a file to save the results in
b.txt
我认为我的脚本出了问题,所以我将a.txt复制并粘贴到winnerStreak.txt中。我的perl脚本再次没有读取文件信息。
我跑了
alexhuhn@Ubuntu-MacPro:~/Desktop/Analysis$ diff a.txt winningStreak.txt
1,5c1,5
< w
< w
< l
< l
<
---
> w
> w
> l
> l
>
并且一切都被认为是不同的,即使它只是被复制和粘贴。有谁知道如何绕过这个问题,因为我的真实数据(streak.txt)比我的模拟集(a.txt)长得多。
alexhuhn@Ubuntu-MacPro:~/Desktop/Analysis$ hexdump -C a.txt winningStreak.txt
00000000 77 0d 0a 77 0d 0a 6c 0d 0a 6c 0d 0a 0d 0a 77 0a |w..w..l..l....w.|
00000010 77 0a 6c 0a 6c 0a 0a |w.l.l..|
00000017
答案 0 :(得分:4)
显然,不可打印的字符必须有区别。一个具有Windows行结尾(CRLF),另一个具有unix行结尾(LF)。
使用dos2unix
或其他工具进行转换,或使用s/\s+\z//
代替chomp
删除行结尾。
答案 1 :(得分:0)
我跑了
alexhuhn@Ubuntu-MacPro:~/Desktop/Analysis$ perl -i -p -e 's/\n/\r\n/' winningStreak.txt
它改变了结尾,以便我的perl脚本有效。
感谢您的帮助!