ネタは はじめての 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)