Perl:将数组写入文本文件
此问题与Perl有关,将数组写入文本文件。Perl:将数组写入文本文件
我打开一个文件名_1并将这个文件的内容存储到一个数组中。 然后我写这个数组到filename_2。 如果我不修改这个数组。我期望filename_2与filename_1完全相同。
事实上,我总是在filename_2的末尾看到一行额外的行。有人能帮我吗?
这里是我的代码:
open(Fh, "<", "filename_1.txt") or die "Cannot open for read";
my @l_file_content_array = <Fh>;
close Fh;
open(Fh2, ">", "filename_2.txt") or die "Cannot open for write";
print Fh2 @l_file_content_array;
close Fh2;
你可以试试:
chomp(my @l_file_content_array = <Fh>);
这应该删除您输入文件的最后一行结束。
感谢您的回复。但是,这个建议并不行。使用上面chomp的代码,filename_2将只包含一行,其中包含文件名_1的内容。文件名_1的所有行都被删除并连接成一行。 – user5680155
@ user5680155是的,我认为你可以使用'print Fh2 join(“\ n”,@l_file_content_array);'而不是'print Fh2 @l_file_content_array;'但是,如果你不同意这个,你可以使用'我的@contents =
尝试添加行:
$\ = ""; # set default print ending to empty string
打印FH2 @l_file_content_array之前;线。
如果上面的“作品”,它可能意味着有一个
$\ = "\n";
线别处程序或包含文件。您仍然可以通过添加该行来修复本地行为:
local $\ = "";
这些文件应该是相同的......当您比较它们时,有什么区别? – Hambone
区别在于filename_2的末尾有一个额外的行。当您打开这两个文件时,可以通过光标的位置看到这种差异的指示。或者cvs软件或其他diff软件会指出这种差异。 – user5680155
在Ubuntu 14.10的Perl 5.20中可以正常工作。你在用什么系统? –