IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Acme::JS::Arguments 作った

ネタは はじめての coderepos で arguments::callee 初体験 - TAKESAKOのはてな出張所 のパクリで、でも XS 書けないので中で Devel::Caller 使ってます。
arguments で引数配列のリファレンスが帰ってくる
arguments->callee で自分自身のコードリファレンスが帰ってくる
って感じです。

コード

package Acme::JS::Arguments;

use strict;
use warnings;

use Devel::Caller qw(caller_args);

use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(arguments);

sub arguments { bless [ caller_args(1) ], 'Acme::JS::Arguments::Callee' }

package Acme::JS::Arguments::Callee;

use Devel::Caller qw(caller_cv);

sub callee { caller_cv(1) }

0721;

use strict;
use warnings;

use Acme::JS::Arguments;
use Data::Dumper;

sub hoge {
    print Dumper(arguments);
    print Dumper(arguments->callee);
    print Dumper(arguments->callee == \&hoge);
}

hoge(1, 2, 3)