Perlで現在のソース行番号を取得することは可能ですか? C++で同等のものは__LINE__
。
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
または
warn("foo");
__LINE__リテラルは perldata man page の Special Literals セクションに記載されています。
注意点があることに注意してください
Perl -e'warn( "foo") '
-e行1のfoo。
改行で終わる場合しない行番号を出力する
Perl -e'warn( "foo\n") '
foo
これは「perldoc -f die」に記載されていますが、「perldoc -f warn」セクションのdieへの参照では見落としがちです...
これにより、現在の行と「スタック」(現在の場所につながる呼び出しプログラム(スクリプト/モジュール/その他)からの行のリスト)も出力されます。
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
「Carpを使用」して、さまざまなルーチンを操作すると、スタックも取得されます。この方法が、cndによって提案された「caller」メソッドよりも良いか悪いかはわかりません。 CおよびPerlでLINE変数とFILE変数(およびおそらく他の同様の変数)を使用して、デバッグ時にコードや他の情報を取得した場所を示しましたが、デバッグ環境以外ではほとんど価値がありませんでした。