39

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

4

4 に答える 4

63

__LINE__リテラルは、 perldata man ページのSpecial Literalsセクションに記載されています。

print "File: ", __FILE__, " Line: ", __LINE__, "\n";

また

warn("foo");
于 2008-12-10T09:01:07.287 に答える
8

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

perl -e'warn("foo")'

-e 行 1 の foo。

改行で終わる場合、行番号は出力されません

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

ふー

これは "perldoc -f die" に文書化されていますが、おそらく "perldoc -f warn" セクションの die への参照で見落としがちです...

于 2008-12-11T02:34:26.100 に答える
1

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

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
于 2012-02-26T13:26:38.190 に答える