Como posso imprimir número de linha de origem em Perl?
-
21-08-2019 - |
Pergunta
É possível obter o número da linha fonte de corrente em Perl?
O equivalente em C ++ é __LINE__
.
Solução
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
ou
warn("foo");
Outras dicas
O literal __LINE__ está documentado no seção de literais especiais o página homem perldata .
Note que há uma pegadinha com
perl -e'warn ( "foo") '
foo na linha -e 1.
Se ele termina com uma nova linha que não imprimir o número de linha
perl -e'warn ( "foo \ n") '
foo
Isso está documentado no "perldoc -f die", mas talvez seja fácil perder no "perldoc -f avisar" referência de seção para morrer ...
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"; }
"O uso da carpa" 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.