对数组、散列等的引用中的十六进制数字表示什么?

发布于 2024-10-10 03:35:28 字数 162 浏览 6 评论 0原文

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

perl -e 'print []'

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

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

When printing a reference to an array, hash, etc, what is that hexadecimal number in brackets?

perl -e 'print []'

Gives an output like: ARRAY(0x9acb830)

What is 0x9acb830 exactly? If I print the same ref again, this number changes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故笙诉离歌 2024-10-17 03:35:28

如果再次打印相同的参考号,数字应该保持不变;该数字是所引用事物的 SV 标头的实际地址。

If you print the same ref again the number should remain the same; the number is the actual address of the SV header for the referred to thingy.

花落人断肠 2024-10-17 03:35:28

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

It's basically the memory location of the array. Perl is trying to let you know you're trying to print a reference and not a scalar value.

Try this:

#! /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)

Notice that when I print a reference, Perl tries to do the right thing. Instead of attempting to print some strange value, it tells you that you're trying to print a scalar or array reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文