Можно ли получить текущий номер строки источника в Perl?
Эквивалент в С++ равен __LINE__
.
Как я могу напечатать номер строки источника в Perl?
Ответ 1
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
или
warn("foo");
Ответ 2
Литерал __LINE__ описан в разделе Special Literals perldata man page.
Ответ 3
Обратите внимание на то, что у вас есть
perl -e'warn ( "foo" ) '
foo at -e строка 1.
если он заканчивается символом новой строки, он не будет печатать номер строки
perl -e'warn ( "foo\n" ) '
Foo
Это описано в "perldoc -f die", но, возможно, легко пропустить в разделе "perldoc -f warn" ссылку на die...
Ответ 4
Отпечатает строку, в которой вы находитесь, а также "стек" (список строк из вызывающих программ (скрипты/модули/etc), которые ведут к тому месту, где вы сейчас находитесь)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
Ответ 5
"используйте Carp" и играйте с различными процедурами, и вы также получите стек - не уверен, что этот способ лучше или хуже, чем метод "вызывающего", предложенный cnd. Я использовал переменные LINE и FILE (и, возможно, другие аналогичные переменные) в C и Perl, чтобы показать, где я попал в код и другую информацию при отладке, но не имел большого значения вне среды отладки.