open my $fp, '<', $file or die $!;
while (<$fp>) {
my $line = $_;
if ($line =~ /$regex/) {
# How do I find out which line number this match happened at?
}
}
close $fp;
Respuesta
Uso $.
(ver perldoc perlvar
).
Muy técnicamente, '$ .' no es necesariamente el número de línea; es la cantidad de veces que se ha llamado al operador 'readline' en el último manejador al que se llamó desde el último' close' (no 'open') del manejador. No reflejaría las líneas si '$ /' no está configurado en '" \ n "' (como '" "' o '" \ n %% \ n "', o si se ha llamado al comando 'open' sin una llamada a 'cerrar' (como ocurre con' ARGV', y por lo tanto con '<>'). Y si es significativo para los archivos de texto con líneas lastimadas que no tienen una secuencia de terminación de línea adecuada en ellos I váyase para su propia contemplación. – tchrist
@tchrist: Su explicación de los casos límite debería haberse publicado como tercera respuesta aquí. – Dallaylaen
[perldoc eof] (http://perldoc.perl.org/functions/eof.html) recomienda el 'continuar 'parte de' while (<>) {...} continuar {cerrar ARGV si eof} 'si usa <>, abordar una de las buenas advertencias de @ tchrist. –
También puede hacerlo a través de la interfaz OO:
use IO::Handle;
# later on ...
my $n = $fp->input_line_number();
Esto está en perldoc perlvar, también.
Eso está sujeto a las mismas advertencias que acabo de delinear para' $ .', por supuesto. – tchrist
- 1. ¿Cómo obtener el número de línea actual?
- 2. VI Expresiones regulares - Sustituir usando el número de línea actual
- 3. ¿Cómo se abre un archivo en C++?
- 4. archivo no se abre usando PHP fopen
- 5. "se requiere un número entero" cuando se abre() 'un archivo como utf-8?
- 6. ¿Cómo se abre un archivo hxs?
- 7. Número de línea actual de un System.Xml.XmlReader (C# & .Net)
- 8. ¿Cómo puedo determinar el número de línea actual en JavaScript?
- 9. Al procesar un archivo, ¿cómo obtengo el número de línea actual?
- 10. ¿Cómo se abre el menú contextual de Windows para un archivo determinado usando Delphi?
- 11. ¿No se muestra el número de línea?
- 12. número de línea actual en Lua
- 13. ¿Cómo puedo obtener el número de archivo y línea donde se creó una referencia de subrutina Perl?
- 14. ¿Cómo descargo un archivo usando Perl?
- 15. ¿Cómo creo un archivo CSV usando Perl?
- 16. Crear un archivo de jerarquía usando perl
- 17. ¿Cómo se divide una línea específica de un archivo requerido en el depurador Perl?
- 18. Resaltando el número de línea actual en vim
- 19. ¿Cómo puedo imprimir el número de línea de origen en Perl?
- 20. Cómo abro un archivo que se abre en otra aplicación
- 21. ¿Cómo se abre un archivo SDF (SQL Server Compact Edition)?
- 22. ¿Cómo leer datos línea por línea desde un archivo usando el script ant?
- 23. Mostrar la línea actual y el número de columna para un área de texto
- 24. ¿Número de días en el mes actual usando iPhone SDK?
- 25. Cómo inserto la hora actual en un archivo usando vim
- 26. ¿Cómo obtener el número de línea de un archivo en C++?
- 27. Perl: cómo elimino la primera línea de un archivo sin leer ni copiar todo el archivo
- 28. Obteniendo el número de línea jsp real de un número de línea de rastreo de pila?
- 29. Solo doblar comentarios cuando se abre el archivo en Vim
- 30. La excepción IsolatedStorageFileStream se lanza cuando se abre el archivo?
Si desea leer una línea en la línea $, a continuación, leer una línea en línea de $ en vez de leer una línea en alguna otra variable y luego copiarlo en línea $: mientras que (mi línea de $ = <$fp>) { – tadmc
@tadmc : o más bien 'while (defined (my $ line = <$fp>)) {...}', ya que la última línea podría ser cero y no terminar en una nueva línea. – phaylon