関数順 インデックス
目的別 インデックス

構文
 
 caller 後戻りする数
 caller

返り値
 
 呼び出し元の情報

説明

  • 現在実行中のサブ・ルーチンの呼び出し元の情報を返します。
  • 指定した数だけ後戻りした呼び出し元の情報を返します。
  • 引数を省略すると,呼び出し元のパッケージ名,ファイル名,行番号を返します。
  • 引数を指定した場合は省略した場合よりも多くの情報を返します。

使用例

呼び出し元のファイル名と行番号を表示する
#!/usr/bin/perl
use strict;
use warnings;

print "-----\n";
hoge();
print "-----\n";

sub hoge {
  my ($package, $filename, $line) = caller;
  printf "%04d %s\n", $line, $filename;
}
呼び出し履歴(深さ,行番号,サブルーチン名)を表示する
#!/usr/bin/perl
use strict;
use warnings;

foo();

sub foo {
  bar();
}

sub bar {
  baz();
}

sub baz {
  my $i = 0;
  while (my ($package, $filename, $line, $subroutine, $hasargs,
          $wantarray, $evaltext, $is_require, $hints, $bitmask
         ) = caller($i)
  ) {
    printf "%d %04d %s\n", $i, $line, $subroutine;
    $i++;
  }
}