0

配列やハッシュなどへの参照を出力する場合、括弧内の 16 進数は何ですか?

perl -e 'print []'

次のような出力が得られます: ARRAY(0x9acb830)

0x9acb830 とは正確には何ですか? 同じ参照を再度印刷すると、この番号が変わります。

4

2 に答える 2

7

同じ参照を再度印刷する場合、番号は同じままである必要があります。番号は、参照されているモノの 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 に答える