我的perl代码
use warnings;
use strict;
my @a = <DATA>;
my %j = qw(aa AA bb BB cc CC dd DD ee EE ff FF gg GG hh HH ii II jj JJ kk KK ll LL);
my @vj = map+split,@a;
my @mkh;
foreach(@vj){
my $k = $j{$_};
my @ab = split(' ',$k);
push(@mkh,@ab);
}
print "@mkh";
__DATA__
jj dd ee aa ii hh kk ll gg bb cc ff
如何在循环外部打印没有空格的输出?在循环条件内打印输出没有空格,但我希望哪个输出是在循环外打印我该怎么办?
答案 0 :(得分:1)
只是
print @mkh;
如果我理解你的问题,那么没有引号。
顺便说一下,我仍然想知道map+split,@a
。我写了map split, @a;
或map { split } @a;
。为什么加号不会破坏任何东西?
似乎+@foo
与@foo
的数组相同,但-@foo
是@foo
的负数。有趣的。
答案 1 :(得分:1)
插入数组时,元素由$"
全局变量分隔。
要避免这种行为,只需直接print
数组。
print @mkh;
perlvar
中记录了这一点:
$LIST_SEPARATOR
$"
当数组或数组切片内插到双引号字符串或类似的上下文(例如
/.../
)时,其元素由此值分隔。默认是一个空格。例如,这个:print "The array is: @array\n";
相当于:
print "The array is: " . join($", @array) . "\n";
助记符:在双引号上下文中工作。
use warnings;
use strict;
while (<DATA>) {
s/\s//g;
print uc, "\n";
}
__DATA__
jj dd ee aa ii hh kk ll gg bb cc ff
输出:
JJDDEEAAIIHHKKLLGGBBCCFF