如何在Perl中打印源代码行号?

rseugnpd  于 2022-11-15  发布在  Perl
关注(0)|答案(4)|浏览(203)

在Perl中是否可以获得当前源代码行号?在C++中的等效方法是__LINE__

mutmk8jj

mutmk8jj1#

__LINE__文字记录在perldata man page的“特殊文字”部分中。

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

warn("foo");
kqqjbcuj

kqqjbcuj2#

请注意,这里有一个

$ perl -e'warn("foo")'
foo at -e line 1.

如果它以换行符结束,则 * 不会 * 打印行号

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

这在perldoc -f die中有说明,但在perldoc -f warn部分对die的引用中可能很容易忽略。

jhdbpxl9

jhdbpxl93#

这将打印出您所在的行,以及“堆栈”(从调用程序(脚本/模块等)到您当前所在位置的行列表)

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

yruzcnhs4#

“use Carp”并使用各种例程,您还可以得到一个堆栈-不确定这种方法是否比cnd建议的“caller”方法更好或更差。我在C和Perl中使用了LINE和FILE变量(可能还有其他类似的变量)来显示我在调试时从代码和其他信息中获得的位置,但在调试环境之外几乎没有看到任何价值。

相关问题