简单的方法来打印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;