2011-03-28 27 views
2

我相信我的标题可能有点混乱,但这里是我想要做的事情的要点。我知道这样做不是“正确的方式”,如果可能的话,我更加好奇。我怎样才能让一个Perl变量引用另一个变量的整数引用

所以可以说我有脚本:

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

这是纯学术性的,还是你心中有一个用例? – 2011-03-28 04:21:22

+0

纯粹学术 – Caterham 2011-03-28 04:41:30

回答

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

+1

因为你已经有了int值,所以你可以做'bless(\ $ foo_location,“B :: AV”) - > object_2svref'。 – ysth 2011-03-28 07:20:22

相关问题