web-dev-qa-db-ja.com

Perlでソース行番号を出力するにはどうすればよいですか?

Perlで現在のソース行番号を取得することは可能ですか? C++で同等のものは__LINE__

34
David Sykes
print "File: ", __FILE__, " Line: ", __LINE__, "\n";

または

warn("foo");
57
Eugene Yokota

__LINE__リテラルは perldata man pageSpecial Literals セクションに記載されています。

11
converter42

注意点があることに注意してください

Perl -e'warn( "foo") '

-e行1のfoo。

改行で終わる場合しない行番号を出力する

Perl -e'warn( "foo\n") '

foo

これは「perldoc -f die」に記載されていますが、「perldoc -f warn」セクションのdieへの参照では見落としがちです...

8
bigiain

これにより、現在の行と「スタック」(現在の場所につながる呼び出しプログラム(スクリプト/モジュール/その他)からの行のリスト)も出力されます。

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
1
cnd

「Carpを使用」して、さまざまなルーチンを操作すると、スタックも取得されます。この方法が、cndによって提案された「caller」メソッドよりも良いか悪いかはわかりません。 CおよびPerlでLINE変数とFILE変数(およびおそらく他の同様の変数)を使用して、デバッグ時にコードや他の情報を取得した場所を示しましたが、デバッグ環境以外ではほとんど価値がありませんでした。

1
user4155330