简单的方法来打印Perl数组? (有一点格式)
有一个简单的方法来打印每个元素之间用逗号的Perl数组?
编写一个for循环来做到这一点很简单,但不是很优雅….如果这是有道理的。
只需使用join()
:
# assuming @array is your array: print join(", ", @array);
你可以使用Data::Dump
:
use Data::Dump qw(dump); my @a = (1, [2, 3], {4 => 5}); dump(@a);
生产:
"(1, [2, 3], { 4 => 5 })"
如果您正在编写一种刚刚开始使用Perl的人的理解,那么传统的这个构造就会说明它的含义,并且具有高度的清晰性和可读性。
$string = join ', ', @array; print "$string\n";
这个构造被logging在perldoc -f
join
。
不过,我一直都很喜欢简单的$,
做到这一点。 特殊variables$"
用于插值,特殊variables$,
用于列表。将任意一个与dynamic作用域约束' 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 }
特殊variables$,
和$"
logging在perlvar中 , local
关键字以及如何用来限制改变全局标点符号variables值的效果可能在perlsub中有最好的描述。
请享用!
另外,你可能想尝试Data :: Dumper 。 例:
use Data::Dumper; # simple procedural interface print Dumper($foo, $bar);
检查/debugging时,请检查Data::Printer
模块。 这意味着只做一件事,一件事:
在屏幕上显示Perlvariables和对象,格式正确(由人类检查)
用法示例:
use Data::Printer; p @array; # no need to pass references
上面的代码可能会输出这样的东西(用颜色!):
[ [0] "a", [1] "b", [2] undef, [3] "c", ]
你可以简单地print
它。
@a = qw(abc def hij); print "@a";
你会得到:
abc def hij
# better than Dumper --you're ready for the WWW.... use JSON::XS; print encode_json \@some_array
使用Data::Dumper
:
use strict; use Data::Dumper; my $GRANTstr = 'SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE, TRIGGER'; $GRANTstr =~ s/, /,/g; my @GRANTs = split /,/ , $GRANTstr; print Dumper(@GRANTs) . "===\n\n"; print Dumper(\@GRANTs) . "===\n\n"; print Data::Dumper->Dump([\@GRANTs], [qw(GRANTs)]);
生成三种不同的输出风格:
$VAR1 = 'SELECT'; $VAR2 = 'INSERT'; $VAR3 = 'UPDATE'; $VAR4 = 'DELETE'; $VAR5 = 'LOCK TABLES'; $VAR6 = 'EXECUTE'; $VAR7 = 'TRIGGER'; === $VAR1 = [ 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'LOCK TABLES', 'EXECUTE', 'TRIGGER' ]; === $GRANTs = [ 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'LOCK TABLES', 'EXECUTE', 'TRIGGER' ];
这可能不是你要找的东西,但是这是我为一个任务做的事情:
$" = ", "; print "@ArrayName\n";
地图也可以使用,但是当你有很多事情正在进行的时候有时候很难阅读。
map{ print "element $_\n" } @array;
尽pipe如此,我还没有尝试在下面跑步。 我认为这是一个棘手的方法。
map{print $_;} @array;