Arrays 打印二维数组
我试着搜索这个,但我不确定这个条件叫什么Arrays 打印二维数组,arrays,perl,Arrays,Perl,我试着搜索这个,但我不确定这个条件叫什么 my @tgs = ( ['article series', 'sed & awk', 'troubleshooting', 'vim', 'bash'], ['ebooks', 'linux 101', 'vim 101', 'nagios core', 'bash 101' ] ); print $_ foreach @tgs; 结果: ARRAY(0x1fedcb8)ARRAY(0x200fe80) 这是什么意思?为什
my @tgs = (
['article series', 'sed & awk', 'troubleshooting', 'vim', 'bash'],
['ebooks', 'linux 101', 'vim 101', 'nagios core', 'bash 101' ]
);
print $_ foreach @tgs;
结果:
ARRAY(0x1fedcb8)ARRAY(0x200fe80)
这是什么意思?为什么会发生这种情况,以及
0x1fedcb8
和0x200fe80
指的是什么?我知道这很可能是一个常见问题,但请耐心听我说。您有一个数组,其中包含对其他数组的两个引用。您得到的是垃圾,因为您正在打印引用,而不是这些引用引用的数组的内容。(十六进制数是引用数组所在的内存地址。)
您可以使用
for my $row (@tgs) {
print(join(' ', @$row), "\n");
}
文档:,您有两个数组。数组中的两个项都是数组。您希望打印什么?@mpapec,最佳答案不在dup中,也不适合发布(因为另一个问题的主题是关于打印2d数组,而问题本身则大不相同)。我要重新打开它。我宁愿有其他问题标记为重复的这一个,因为它是明确和准确的。如果这样的问题已经存在,请随时再次标记为dup。将代码中的
$\uu
更改为“@{$\u}\ n”
也会将其打印出来。此引用在代码中的何处发生?在我看来,它只是声明了一个数组变量,然后在@tgs中遍历每个元素并打印它。其他两个数组在哪里?@sbnation[]
之间的文本(这些括号中包含匿名数组构造函数)['article series','sed&awk','problembleshooting','vim','bash']
是一个数组,每个完整的[]
本身就是@tgs
中的数组元素。有关更多信息,请参阅。@G.Cito-yetprint@$\u,“\n”foreach(@tgs)代码>打印我所期望的内容(所有元素,所做的只是添加一个换行符并将@tgs括在括号中。@sbnation,Re“在代码中的什么地方发生了这种引用?”[…]
基本上是do{my@anon=(…)\@anon}的缩写
。它创建一个数组和对它的引用,并返回引用。@sbnation,是的,您可以使用@$row
而不是连接(''.@$row)
,但它不可读。