Answers:
只需使用join()
:
# assuming @array is your array:
print join(", ", @array);
print "current directory contains " . join(', ', <*>) . "\n";
您可以使用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";
该结构记录在 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);
pelrdoc perlmodlib
。
为了检查/调试,请检查Data::Printer
模块。它的意思是仅做一件事和一件事:
在屏幕上显示格式正确的Perl变量和对象(供人工检查)
用法示例:
use Data::Printer;
p @array; # no need to pass references
上面的代码可能会输出以下内容(带有颜色!):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
libdata-printer-perl
软件包。
使用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'
];
也可以使用地图,但是当您发生许多事情时,有时很难阅读。
map{ print "element $_\n" } @array;
{local $,=', ';print @array}
。