0

打印对数组、哈希等的引用时,括号中的十六进制数字是什么?

perl -e 'print []'

给出如下输出:ARRAY(0x9acb830)

0x9acb830 到底是什么?如果我再次打印相同的参考,这个数字会改变。

4

2 回答 2

7

如果您再次打印相同的 ref,则数字应保持不变;该数字是所指事物的 SV 标头的实际地址。

于 2011-01-02T01:40:49.763 回答
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 会尝试做正确的事情。它没有尝试打印一些奇怪的值,而是告诉您您正在尝试打印标量或数组引用。

于 2011-01-02T03:55:22.727 回答