打印对数组、哈希等的引用时,括号中的十六进制数字是什么?
perl -e 'print []'
给出如下输出:ARRAY(0x9acb830)
0x9acb830 到底是什么?如果我再次打印相同的参考,这个数字会改变。
如果您再次打印相同的 ref,则数字应保持不变;该数字是所指事物的 SV 标头的实际地址。
它基本上是数组的内存位置。Perl 试图让您知道您正在尝试打印引用而不是标量值。
试试这个:
#! /usr/bin/env perl
use strict;
use warnings;
my @foo = qw(one two three four five);
print @foo . "\n"; #Prints the array in a scalar context (five items)
print \@foo . "\n";
print $foo[1] . "\n";
print \$foo[1] . "\n";
5
two
SCALAR(0x100804ff0)
ARRAY(0x10082ae48)
请注意,当我打印参考时,Perl 会尝试做正确的事情。它没有尝试打印一些奇怪的值,而是告诉您您正在尝试打印标量或数组引用。