我正在尝试使用push添加数组中的所有元素。然后我存储到另一个文件
但文件的开头我看到每件事都有一个白人......
问题是什么..任何人面对这个问题。
open FILE , "a.txt"
while (<FILE>)
{
my $temp =$_;
push @array ,$temp;
}
close(FILE);
open FILE2, "b.txt";
print FILE2 "@array";
close FILE2;
答案 0 :(得分:7)
当你引用这样的数组变量时:"@array"
它会用空格进行插值。这就是他们在你的输出中的来源。因此,如果您不需要或不需要这种插值,请不要引用。
现在让我们将您的程序重写为现代Perl。
use strict;
use warnings FATAL => 'all';
use autodie qw(:all);
my @array;
{
open my $in, '<', 'a.txt';
@array = <$in>;
}
{
open my $out, '>', 'b.txt';
print {$out} @array;
}
答案 1 :(得分:4)
你在"@array"
附近加上引号。这使得它成为字符串插值,对于数组而言等效于join($", @array)
。 $"
的默认值是(猜猜是什么?)空格。
尝试
print FILE2 @array;
答案 2 :(得分:2)
open
通常采用另一个参数来指定文件是为输入还是为输出打开(或者为两者或某些其他特殊情况打开)。您已省略此参数,因此默认情况下FILE2
是输入文件句柄。
你想说
open FILE2, '>', "b.txt"
如果你放行
use warnings;
在每个Perl脚本的开头,解释器将为您捕获许多这样的问题。