文件在每行中添加一个额外的空格

时间:2010-06-10 16:06:22

标签: perl

我正在尝试使用push添加数组中的所有元素。然后我存储到另一个文件

但文件的开头我看到每件事都有一个白人......

问题是什么..任何人面对这个问题。

open FILE , "a.txt"

while (<FILE>)
{

  my $temp =$_;

  push @array ,$temp;

}
close(FILE);

open FILE2, "b.txt";
print FILE2 "@array";
close FILE2;

3 个答案:

答案 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脚本的开头,解释器将为您捕获许多这样的问题。