¿Es posible obtener el número de línea fuente actual en Perl? El equivalente en C++ es __LINE__
.¿Cómo puedo imprimir el número de línea de origen en Perl?
Respuesta
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
o
warn("foo");
warn se imprimirá en STDERR. – mat
El __LINE__ literal se documenta en la sección Special Literals de la perldata man page.
Nota hay un Gotcha con
-e'warn Perl ("foo")'
foo en la línea 1. -e
si termina con un salto de línea que no lo hará imprimir el número de línea
perl -e'warn ("foo \ n")'
foo
Esto está documentado en "perldoc -f morir", pero es quizás fácil perderse en la referencia de la sección "perldoc -f warn" para morir ...
Esto imprime la línea donde se encuentra, y también la "pila" (lista de las líneas de los programas de llamadas (scripts/modules/etc) que conducen al lugar donde están ahora)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
"utilizar la carpa" y jugar con las diversas rutinas y también se obtiene una pila: no estoy seguro si esta forma es mejor o peor que el método de "llamada" sugerido por cnd. He utilizado las variables LINE y FILE (y probablemente otras variables similares) en C y Perl para mostrar dónde obtuve el código y otra información al realizar la depuración, pero he visto poco valor fuera de un entorno de depuración.
- 1. ¿Cómo puedo imprimir el contenido de un hash en Perl?
- 2. ¿Cómo puedo imprimir solo una nueva línea de Unix en Perl en Win32?
- 3. ¿Cómo puedo imprimir en la misma línea?
- 4. ¿Cómo puedo imprimir elementos de lista separados por alimentaciones de línea en Perl?
- 5. Cómo imprimir las variables en Perl
- 6. ¿Cómo puedo determinar el número de línea actual en JavaScript?
- 7. ¿Cómo puedo imprimir texto inmediatamente sin esperar una nueva línea en Perl?
- 8. Cómo imprimir el número de caracteres en cada línea de un archivo de texto
- 9. Cómo limitar el número máximo de subprocesos paralelos en Perl
- 10. ¿Cómo puedo imprimir el primero al quinto de los últimos elementos de la matriz en Perl?
- 11. ¿Cómo imprimir el nombre del método y el número de línea y deshabilitar condicionalmente NSLog?
- 12. ¿Cómo puedo capturar la línea de comando completa en Perl?
- 13. ¿Cómo puedo comentar solo parte de una línea en Perl?
- 14. ¿Cómo puedo imprimir una nueva línea correctamente en Haskell?
- 15. ¿Cómo puedo convertir un número en texto en Perl?
- 16. ¿Cómo puedo imprimir sobre la línea actual en una aplicación de línea de comando?
- 17. ¿Cómo puedo convertir una cadena en un número en Perl?
- 18. Cómo imprimir todos los valores de una matriz en Perl
- 19. ¿Cómo imprimir el uso del programa en Perl?
- 20. ¿Cómo puedo obtener el número de archivo y línea donde se creó una referencia de subrutina Perl?
- 21. Imprimir un número en brainfuck?
- 22. ¿Cómo se abre el número de línea actual de un archivo usando Perl?
- 23. ¿Cómo puedo embellecer el código de Perl generado por Perl?
- 24. ¿Cómo obtener el número de línea actual?
- 25. ¿Cómo puedo imprimir en una variable en lugar de un archivo, en Perl?
- 26. ¿Cómo obtener el nombre del archivo de origen y el número de línea de un miembro de tipo?
- 27. ¿Cómo puedo obtener el número de páginas en un archivo PDF en Perl?
- 28. ¿Cómo puedo contar personajes en Perl?
- 29. ¿Cómo puedo reemplazar una línea específica por número de línea en un archivo de texto?
- 30. Imprimir más que los valores de color ANSI en Perl
Sin embargo, me pregunto: ¿por qué necesitarías esto? –
Lo he usado para rastrear rápidamente el progreso a través de un proceso muy largo, y para verificar el orden en que se hacen las cosas, como puntos de interrupción pero sin usar el depurador –
@LeonTimmermans: estoy respondiendo a su antiguo comentario sobre por qué un Perl el programador puede querer _ _FILE_ _ y _ _ LINE _ _. Básicamente, las mismas razones por las que un programador C/C++ podría quererlas. P.ej. hoy reformé una prueba para que se llamara Test :: Differences :: eq_or_diff en una subrutina. El número de línea informado estaba en la subrutina, no desde donde se llamó a la subrutina. Agregar __ LINE __ al nombre de la prueba me ayuda a encontrar la prueba que falla. Ahora si pudiera escribir una macro CODE_LOCATION en Perl5. –