在Perl中是否可以获取当前源代码行号?C++中等价的是__LINE__
。
在Perl中是否可以获取当前源代码行号?C++中等价的是__LINE__
。
__LINE__
字面量在 perldata man page 的 Special Literals 部分有详细的文档说明。
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
或者warn("foo");
$.
从读取文件中输出行号的回复,这就像在循环读取行时递增变量一样简单。所以我想知道是否有很多其他人也会遇到同样的问题。有趣的是,当我用不同的方式搜索时,谷歌似乎把这个问题放在了搜索结果中,或者我在最初的尝试中忽略了它。 - FantomX1$ perl -e'warn("foo")'
foo at -e line 1.
$ perl -e'warn("foo\n")'
foo
这在perldoc -f die
中有记录,但在perldoc -f warn
部分提到die
时可能很容易被忽视。
"use Carp"并尝试使用不同的例程,您也可以获得堆栈 - 不确定这种方式是比cnd建议的“caller”方法更好还是更差。我曾经在C和Perl中使用LINE和FILE变量(以及可能其他类似的变量)来显示我在调试代码时的位置和其他信息,但在调试环境之外几乎没有什么价值。
这将打印出您所在的行以及“堆栈”(调用程序(脚本/模块等)的行列表,这些行导致您现在所在的位置)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }