我正在使用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
答案 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)
write_file( $file_name, {atomic => 1}, map "$_=$conf{$_}\n", keys %conf ) ;