Что означает шестнадцатеричное число в ссылке на массив, хэш и т. Д.? - PullRequest
0 голосов
/ 02 января 2011

При выводе ссылки на массив, хэш и т. Д., Что это за шестнадцатеричное число в скобках?

perl -e 'print []'

Дает вывод типа: ARRAY (0x9acb830)

Что такое 0x9acb830? Если я снова напечатаю ту же ссылку, это число изменится.

Ответы [ 2 ]

7 голосов
/ 02 января 2011

Если вы снова напечатаете ту же ссылку, номер должен остаться прежним;число - это фактический адрес заголовка SV для упомянутой вещи.

1 голос
/ 02 января 2011

Это в основном место в памяти массива.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 пытаетсясделать правильную вещь .Вместо того, чтобы пытаться напечатать какое-то странное значение, он говорит вам, что вы пытаетесь напечатать скаляр или ссылку на массив.

...