• Publicidad

Manipulación ficheros planos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Manipulación ficheros planos

Notapor enric73 » 2013-05-08 02:41 @153

Hola, explorer.

Muchas gracias, ya está solucionado.

Un par de preguntas sobre el código.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. ## Bucle
  2. while (not eof $fh[0]) {    
  3.     my @columnas = map { scalar <$_> } @fh;      # leemos una línea (scalar) por cada archivo en @fh
  4.     chomp @columnas;
  5.  say $OUT join "\t", @columnas;
  6. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


1- while (not eof $fh[0]) ### ¿Qué significa?
2- my @columnas #### ¿Puedo poner simplemente @columnas?
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Publicidad

Re: Manipulación ficheros planos

Notapor explorer » 2013-05-08 05:17 @261

while (not eof $fh[0]) { quiere decir
"mientras no lleguemos al final del archivo abierto con el primer gestor de archivo almacenado en @fh, seguimos con el bucle".

Si suponemos que todos los archivos tienen el mismo número de filas, entonces nos vale como regla de terminación del bucle, el terminar de leer el primer archivo.

La función my() lo que hace es declarar a la variable que le sigue como local en el contexto donde se encuentra la función. En el programa, entonces, estamos diciendo que la variable @columnas es local dentro del while (que es el que tiene las llaves del contexto), y fuera de él, no será conocida.

Si le quitas el my(), y dejas la variable sola, estarás usando una variable global o una variable local declarada antes (antes de esa línea). Si tienes activado el modo 'use strict', y no has declarado esa variable antes de usarla, Perl sacará un mensaje de error diciendo que se ha encontrado una variable de la que no sabe de dónde viene.

Así que si quieres quitar el my(), también debes:
  • quitar el modo estricto de programación, o
  • declarar la variable con my() al principio del programa
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Manipulación ficheros planos

Notapor enric73 » 2013-05-08 10:31 @480

¡Muchas gracias, explorer! También os sigo por el twitter.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados