以下の内容はhttps://end0tknr.hateblo.jp/entry/20090211/1234349333より取得しました。


perlfuncのcallerで呼出し元の情報を取得

perlではcaller関数で呼出し元の情報を取得できます。

引数なしで実行すると、package,file,line noを取得

#!/usr/local/bin/perl
use strict;
use warnings;
use Data::Dumper;

sub func_1  {
    func_2();
}
sub func_2 {
    func_3();
}
sub func_3{
    my @call_info = caller;
    print STDERR Dumper(\@call_info);
}

func_1();
[endo@colinux perl]$ ./foo.pl 
$VAR1 = [
          'main',     #package name
          './foo.pl', #file name
          10          #line number
        ];

引数付で実行すると、詳細情報を取得

($package, $filename, $line, $subroutine, $hasargs,
 $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
   = caller($i);

caller(1)のように「いくつ前の呼出元か(0,1,2...)」を示す引数を指定すると、詳細な情報を得ることができます。
※caller(0)のように 0を指定すると、自身のmethod情報を取得できます
※返り値の説明は、次のurlをご覧下さい。
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod

#!/usr/local/bin/perl
use strict;
use warnings;
use Data::Dumper;

sub func_1  {
    my @ret = func_2();
}
sub func_2 {
    my @ret = func_3();
}
sub func_3{
    my @call_info = caller(1); #callerで 1 を指定
    print STDERR Dumper(\@call_info);
}

func_1();
[endo@colinux perl]$ ./foo.pl 
$VAR1 = [
          'main',         #$package     
          './foo.pl',     #$filename
          7,              #$line
          'main::func_2', #$subroutine
          1,              #$hasargs
          1,              #$wantarray
          undef,          #$evaltext
          undef,          #$is_require
          1538,           #$hints
          'UUUUUUUUUUU',  #$bitmask
          undef           #$hinthash
        ];



以上の内容はhttps://end0tknr.hateblo.jp/entry/20090211/1234349333より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14