引用数组,哈希等的十六进制数表示什么?

时间:2011-01-02 01:36:19

标签: perl ref

当打印对数组,哈希等的引用时,括号中的十六进制数是多少?

perl -e 'print []'

提供如下输出:ARRAY(0x9acb830)

什么是0x9acb830?如果我再次打印相同的参考号,则此数字会改变。

2 个答案:

答案 0 :(得分:7)

如果再次打印相同的参考号,则数字应保持不变;数字是引用的东西的SV标题的实际地址。

答案 1 :(得分:1)

它基本上是数组的内存位置。 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会尝试执行正确的事情。它不是试图打印一些奇怪的值,而是告诉您正在尝试打印标量或数组引用。