Perl 函数的作用是:返回后跟十六进制数的类型,而不是串联字符串
本质上,我想要获取一个数组,并创建一个字符串,其中所述数组的元素由换行符分隔 我有一个名为Perl 函数的作用是:返回后跟十六进制数的类型,而不是串联字符串,perl,Perl,本质上,我想要获取一个数组,并创建一个字符串,其中所述数组的元素由换行符分隔 我有一个名为$zones的数组。输出对$zones的引用将确认它是一个数组 以下代码: print_log(Dumper($zones)); print_log('-------'); print_log(Dumper(join("\n",$zones))); 结果如下所示: [2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = [ 'fake
$zones
的数组。输出对$zones
的引用将确认它是一个数组
以下代码:
print_log(Dumper($zones));
print_log('-------');
print_log(Dumper(join("\n",$zones)));
结果如下所示:
[2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = [
'fake.com25',
'fake.com2',
'fake.com27',
'fake.com43',
'fake.com41',
'fake.com40',
'fake.com39',
'fake.com37',
'fake.com36',
'fake.com35',
'fake.com31',
'fake.com56',
'fake.com55',
'fake.com54',
'fake.com53',
'fake.com52',
'fake.com51',
'fake.com50',
'fake.com49',
'fake.com48',
'fake.com42',
'fake.com38',
'fake.com34',
'fake.com33',
'fake.com32',
'fake.com30',
'fake.com29',
'fake.com28',
'fake.com26',
'fake.com24',
'fake.com23',
'fake.com69',
'fake.com68',
'fake.com67',
'fake.com66',
'0',
'fake.com44',
'fake.com45',
'fake.com46',
'fake.com278'
];
[2013-06-15 16:23:29 -0500] info [dnsadmin] -------
[2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = 'ARRAY(0x170cf0d8)';
我真的不想手动循环这个数组。有人能解释一下为什么
join()
函数返回类型的名称和十六进制数吗?您需要的是join(“\n“,@{$zones}”)
$zones
是数组引用,要连接数组值,必须首先在标量$zones
前面加上
print_log(Dumper(join("\n",@$zones)));
有关更多信息,请参阅参考资料的简短教程:
用户1937198很好地解释了如何做,但为什么它是这样工作的呢 很简单:
$zones
不是数组。这是一个数组引用
join
适用于列表。因此,如果你这样做:
join("\n",$zones)
您实际上是在单个元素列表上调用join
。元素是一个引用,它恰好字符串化为数组(0x170cf0d8)
要使其正常工作,您必须取消对它的引用,并且可以通过使用实数据类型(@
或%
,或者在某些情况下$
)作为前缀来完成
可以这样写:@$zones
,或者(包括我在内的一些人说它更可读)为:@{$zones}
当您使用嵌套结构时,这一点很重要,因为虽然可以使用普通数组作为变量,但在处理嵌套数据结构时,它始终是引用。我将此标记为答案,因为它解释了它的工作原理。我不知道PERL有引用的概念,所以这个解释对我很有价值。