是否可以在Perl中获取当前的源代码行?
C ++中的等价物是__LINE__
。
答案 0 :(得分:54)
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
或
warn("foo");
答案 1 :(得分:10)
{_ 3}}的Special Literals部分记录了__LINE__文字。
答案 2 :(得分:7)
注意有一个问题
perl -e'warn(“foo”)'
foo at -e line 1。
如果以换行符结尾,则 不会打印行号
perl -e'warn(“foo \ n”)'
FOO
这在“perldoc -f die”中有记载,但在“perldoc -f warn”部分对die的引用可能很容易错过......
答案 3 :(得分:1)
这打印出你所在的行,以及" stack" (来自调用程序(脚本/模块/等)的行列表,指向您现在所在的位置)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
答案 4 :(得分:1)
"使用Carp"并且玩各种例程并且你也得到一个堆栈 - 不确定这种方式是否比"来电者更好或更差? cnd提出的方法。我在C和Perl中使用了LINE和FILE变量(可能还有其他类似的变量)来显示我在调试时获得的代码和其他信息,但在调试环境之外几乎看不到它。