如何使用File :: Slurp将数组写入带换行符的文件?

时间:2013-12-11 21:11:31

标签: perl

我正在使用File :: Slurp写入文件。问题是数组元素在一行上被写为单个字符串。我想在不同的行上打印数组元素。

我总是可以格式化我的数组元素,在每个元素中都有一个换行符,我不想这样做。

File :: Slurp是否支持在单独的行上打印数组元素的任何选项?我在文档中找不到任何选项。

use File::Slurp;
my @input = ();

push (@input, "1:2");
push (@input, "a:b");

write_file("./out", @input);

输出看起来像这样

1:2a:b

我想要

1:2
a:b

3 个答案:

答案 0 :(得分:9)

我认为File::Slurp没有选项可以在不同的行上打印数组元素。使用map为所有数组元素添加换行符。这不会修改您的数组:

use warnings;
use strict;
use File::Slurp;

my @input = ();

push (@input, "1:2");
push (@input, "a:b");

write_file("./out", map { "$_\n" } @input);

答案 1 :(得分:6)

在这种情况下,只需将Perl的$"变量设置为\n并将插值数组写入文件:

use strict;
use warnings;
use File::Slurp;

local $" = "\n";

my @input = ();
push( @input, "1:2" );
push( @input, "a:b" );

write_file( "./out", "@input" );

输出到文件:

1:2
a:b

答案 2 :(得分:5)

来自documentation

write_file( $file_name, {atomic => 1}, map "$_=$conf{$_}\n", keys %conf ) ;