基本上当我使用Data :: Dumper时,我得到了
$VAR1 = [
'63',
'Joe',
'Bloggs',
'8-Mon',
'FAU70',
8
];
$VAR2 = 'Bye';
但我想得到的是
$VAR1 = 'Joe Bloggs 8-Mon';
$VAR2 = 'Bye';
关于我如何处理数组只包含一个曾经是多个值的值的任何想法?
谢谢!
答案 0 :(得分:3)
假设您将数组放在变量@array中
my @array=(['63','Joe','Bloggs','8-Mon','FAU70',8],'Bye');
此阵列结构上的转储程序的工作方式如下:
$VAR1 = [
'63',
'Joe',
'Bloggs',
'8-Mon',
'FAU70',
8
];
$VAR2 = 'Bye';
用它来得到你想要的东西:
map{$_=join(" ",@$_[1..4]) if(ref $_ eq 'ARRAY');} @array;
现在转储器会像这样打印:
$VAR1 = 'Joe Bloggs 8-Mon FAU70';
$VAR2 = 'Bye';
答案 1 :(得分:1)
您可以使用切片[1..3]
选择所需数组的部分,然后join
使用如下所示的连接将它们my $a = [ '63', 'Joe', 'Bloggs', '8-Mon', 'FAU70', 8 ];
my $var1 = join ' ', @$a[1..3];
my $var2 = 'bye';
print "$var1 $var2\n";
选为一个字符串:
Joe Bloggs 8-Mon bye
输出:
{{1}}
答案 2 :(得分:1)
如果您希望将所有数组引用列为字符串,则只需转换它们:
use strict;
use warnings;
use Data::Dumper;
my @array = (['63', 'Joe', 'Bloggs', '8-Mon', 'FAU70', 8], 'Bye');
print Dumper(map {ref $_ ? "@$_" : $_} @array);
输出:
$VAR1 = '63 Joe Bloggs 8-Mon FAU70 8';
$VAR2 = 'Bye';
但是,如果你的目标只是更紧密的输出,我建议调查Data::Dump
作为Data::Dumper
的替代方案:
use strict;
use warnings;
my @array = (['63', 'Joe', 'Bloggs', '8-Mon', 'FAU70', 8], 'Bye');
use Data::Dump;
dd @array;
输出:
([63, "Joe", "Bloggs", "8-Mon", "FAU70", 8], "Bye")