Como posso imprimir número de linha de origem em Perl?

votos
27

É possível obter o número da linha fonte de corrente em Perl? O equivalente em C ++ é __LINE__.

Publicado 10/12/2008 em 09:55
fonte usuário
Em outras línguas...                            


5 respostas

votos
51

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

ou

warn("foo");
Respondeu 10/12/2008 em 10:01
fonte usuário

votos
10

O __LINE__ literal está documentado no literais especiais seção da página homem perldata .

Respondeu 10/12/2008 em 15:07
fonte usuário

votos
6

Observe que há uma pegadinha com

perl -e'warn ( "foo")'

foo na linha -e 1.

se ele termina com uma nova linha que não irá imprimir o número da linha

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

foo

Isso está documentado no "perldoc -f morrer", mas talvez seja fácil perder no "perldoc -f avisar" referência de seção para morrer ...

Respondeu 11/12/2008 em 03:34
fonte usuário

votos
1

"Usar Carp" e jogar com as várias rotinas e você também terá uma pilha - não tenho certeza se este caminho é melhor ou pior do que o método "chamador" sugerida pelo CND. Eu tenho usado as variáveis ​​de linha e de arquivo (e, provavelmente, outras variáveis ​​semelhantes) em C e Perl para mostrar onde eu tenho o código e outras informações quando a depuração, mas vimos pouco valor fora de um ambiente de depuração.

Respondeu 17/10/2014 em 23:28
fonte usuário

votos
1

Isso mostra a linha onde você está, e também a "pilha" (lista de linhas dos programas de chamada (scripts / módulos / etc) que levam para o lugar que você está agora)

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
Respondeu 26/02/2012 em 14:26
fonte usuário

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