Как я могу напечатать исходный номер строки в Perl?

голоса
27

Можно ли получить текущий исходный номер строки в Perl? Эквивалент в C ++ это __LINE__.

Задан 10/12/2008 в 09:55
источник пользователем
На других языках...                            


5 ответов

голоса
51

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

или

warn("foo");
Ответил 10/12/2008 в 10:01
источник пользователем

голоса
10

__LINE__ буквальный описан в специальных литералах разделе perldata страницы человека .

Ответил 10/12/2008 в 15:07
источник пользователем

голоса
6

Обратите внимание, что есть глюк с

Perl -e'warn ( "Foo")»

Foo в строке 1 -е.

если он заканчивается с новой строки она не будет печатать номер строки

Perl -e'warn ( "Foo \ п")»

Foo

Это отражено в «perldoc -f умереть», но, возможно, легко пропустить в «perldoc -f предупредит» справочный раздел, чтобы умереть ...

Ответил 11/12/2008 в 03:34
источник пользователем

голоса
1

«Использовать Карп» и играть с различными рутин и вы также получите стек - не уверен, что если этот путь лучше или хуже, чем метод «вызывающего абонента», предложенного CND. Я использовал строки и файла переменных (и, вероятно, другие аналогичные переменные) в C и Perl, чтобы показать, где я получил в коде и другой информации при отладке, но видел мало ценности вне среды отладки.

Ответил 17/10/2014 в 23:28
источник пользователем

голоса
1

Это выводит строку, где вы находитесь, а также «стек» (список строк из программ вызовов (скрипты / модулей / и т.д.), которые приводят к тому месту, вы теперь)

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
Ответил 26/02/2012 в 14:26
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more