有没有一种简单的方法将Perl数组中的每个元素之间用逗号隔开并打印出来?
编写for循环实现这个目标相当容易,但不够优雅...如果这能说明问题。
有没有一种简单的方法将Perl数组中的每个元素之间用逗号隔开并打印出来?
编写for循环实现这个目标相当容易,但不够优雅...如果这能说明问题。
您可以使用Data::Dump
:
use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);
生成:
"(1, [2, 3], { 4 => 5 })"
如果你正在编写能够被刚开始接触 Perl 的人理解的清晰代码,那么使用传统的 this 结构可以非常清晰易读地表达其含义:
$string = join ', ', @array;
print "$string\n";
这种结构在perldoc -f
join
中有文档记录。
然而,我一直喜欢 $,
的简单易用。特殊变量$"
用于插值,而特殊变量$,
用于列表。将它们与动态作用域约束的'local
'结合使用,可以避免脚本中产生连锁反应:
use 5.012_002;
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $" = ', ';
print "@array\n"; # Interpolation.
}
使用$进行或运算:
use feature q(say);
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $, = ', ';
say @array; # List
}
特殊变量$,
和$"
在perlvar中有文档记录。如何使用local
关键字来限制修改全局标点符号变量值的影响,最好在perlsub中进行描述。另外,您可能想尝试 Data::Dumper。例如:
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
perldoc perlmodlib
。 - shawnhcorey进行检查/调试时,请查看Data::Printer
模块。它只有一个目的:
在屏幕上以适当的格式(供人类检查)显示Perl变量和对象
使用示例:
use Data::Printer;
p @array; # no need to pass references
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
libdata-printer-perl
软件包。 - planetp@a = qw(abc def hij);
print "@a";
您将获得:
abc def hij
use warnings;
并查看它的提示。 - Toto# better than Dumper --you're ready for the WWW....
use JSON::XS;
print encode_json \@some_array
$" = ", ";
print "@ArrayName\n";
我没有尝试运行下面的代码,因为我认为这是一个棘手的方法。
map{print $_;} @array;
地图也可以使用,但是当你有很多事情要处理时,有时候很难阅读。
map{ print "element $_\n" } @array;
{local $,=', ';print @array}
。 - musiKkprint "当前目录包含 " . join(', ', <*>) . "\n";
- Randall