如何通过其整数引用使Perl变量引用另一个变量

时间:2011-03-28 04:06:35

标签: perl memory integer reference

我相信我的头衔可能有点令人困惑,但这是我想要做的事情的要点。我知道这不是“正确的方法”,如果有可能,我会更好奇。

让我们说我有脚本:

#!/usr/bin/perl

use strict;
use warnings;

my $foo = "bar";
my $foo_location = int(\$foo);

print $foo_location;

这个的输出类似于136167064

如何使用该整数($ foo在内存中的位置),并使用该整数创建另一个引用$ foo的变量。

所以我想要做的是:

my $foo_reference = some_magical_function_call($foo_location);

允许修改$ foo_reference的解引用,修改$ foo的值。因此,无论什么魔法允许这个工作,

$$foo_reference eq $foo

评估为真

我想说我几年前就想到了这一点,但也许我疯了。

1 个答案:

答案 0 :(得分:4)

啊,哎呀。我找到了答案。我可能应该在发布之前等待。

无论如何,如果有人好奇的话:

#!/usr/bin/perl
use strict;
use warnings;
use B;


my $foo = "bar";
my $foo_location = int(\$foo);

my $real_ref = bless(\(0+hex sprintf("%0x",$foo_location)), "B::AV")->object_2svref;

print $$real_ref;

打印栏

我从this question

的答案中找到了这一点