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

sam*_*sam 5 perl

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

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

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

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

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

write_file("./out", @input);
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

1:2a:b
Run Code Online (Sandbox Code Playgroud)

我想要

1:2
a:b
Run Code Online (Sandbox Code Playgroud)

too*_*lic 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);
Run Code Online (Sandbox Code Playgroud)


Ken*_*sis 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" );
Run Code Online (Sandbox Code Playgroud)

输出到文件:

1:2
a:b
Run Code Online (Sandbox Code Playgroud)


Сух*_*й27 5

文档

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