アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

Acme::Pointer をリリースしました

metacpan.org

こんな感じの文字列を渡してあげるとデリファレンスしてくれます。

CODE(0x7fd541a84a30)
HASH(0x7fd541a84a30)
ARRAY(0x7fd541a84a30)
SCALAR(0x7fd541a84a30)

なのでリファレンスの文字列さえ保存しておけば、参照先が生きている限り実体へアクセスが可能です。

#!/usr/bin/env perl

use strict;
use warnings;
use feature qw/say/;
use Acme::Pointer;

my $addr;

package Hello {
    my $a = sub { say "Hello"  };
    $addr = "$a";
    say $addr;
};

say "-" x 10;
my $c = deref($addr);
$c->();

if ($addr =~ /CODE\((.*)\)/) {
    my $_c = pointer($1);
    $_c->();
}