• Publicidad

Perl format

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Perl format

Notapor silva » 2013-01-07 10:12 @466

Estoy generando una función, la cual recibe cuatro variables como parámetros, y deseo ir conformando un archivo.txt con los datos que voy enviando a medida que invoco a la misma. El archivo tiene un formato tabular para lo cual estoy usando format, pero no sucede nada, no graba nada en el archivo, y no respeta tampoco el formato definido.

En vez de escribir el archivo lo muestra en pantalla y sin el formato indicado.

¿Qué estoy haciendo mal?

Sintáxis: [ Descargar ] [ Ocultar ]
  1. sub    generar_archivo_txt 
  2.  my $apertura = shift; 
  3.  my $titulo= shift; 
  4.  my $dir_Files = shift; 
  5.  my $FileTXT = shift; 
  6.  
  7.  my $dato_columna1= shift; 
  8.  my $dato_columna2= shift ; 
  9.  my $dato_columna3 = shift; 
  10.   
  11. if ($apertura eq 'T') { 
  12.   open(ARCHIVO_TXT,">$dir_Files/$FileTXT.txt") || die "\n Error al crear el archivo.\n\n"; 
  13.    
  14.   format = 
  15.    @<<<<<<<<< @<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<< $@##.## 
  16.    $dato_columna1, $dato_columna2, $dato_columna3 
  17.   . 
  18.  
  19.   format STDOUT_TOP = 
  20.    @|||||||||||||||||||||||||||||||||||| Pg @< 
  21.    "$titulo_csv",    $% 
  22.  
  23.    Columna1       Columna2     Columna3  
  24.    ----------------- ----------------  -------------------------   
  25.   . 
  26.  
  27.   $dato_columna1= "" if !defined(dato_columna1); 
  28.   $dato_columna2 = "" if !defined($cdato_columna2); 
  29.   $dato_columna3= "" if !defined($dato_columna3); 
  30.   write(); 
  31.   close (ARCHIVO_TXT); 
  32.  else { 
  33.    open(ARCHIVO_TXT,">>$dir_Files/$FileTXT.txt") || die "\n Error al actualizar el archivo.\n\n"; 
  34.  
  35.   $dato_columna1= "" if !defined(dato_columna1); 
  36.   $dato_columna2 = "" if !defined($cdato_columna2); 
  37.   $dato_columna3= "" if !defined($dato_columna3); 
  38.   write(); 
  39.   close (ARCHIVO_TXT); 
  40.  
  41.  } 
  42.   
  43.  return 1; 
  44.  
  45.  


No esta grabando el archivo txt, Muestra por pantalla y sin el formato definido.

¡¡¡Gracias!!!
silva
Perlero nuevo
Perlero nuevo
 
Mensajes: 82
Registrado: 2011-05-24 05:59 @291

Publicidad

Re: Perl format

Notapor explorer » 2013-01-07 11:21 @514

Creo que el problema está en el nombre que le das al formato, que no coincide con el gestor de archivo del archivo al que quieres mandar el formato.

Y algunos errores en la variables $dato_...

Y me parece que tienes definidos 4 parámetros por fila, pero yo solo veo 3 (las 3 variables $dato_...)

(no probado)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub generar_archivo_txt {
  2.     my($apertura, $titulo, $dir_Files, $FileTXT,
  3.        $dato_columnas1, $dato_columnas2, $dato_columnas3) = @_;
  4.  
  5.     if ( $apertura eq 'T' ) {
  6.         open( ARCHIVO_TXT, ">$dir_Files/$FileTXT.txt" ) or die "\n Error al crear el archivo: $!\n\n";
  7.  
  8.         $dato_columna1 = "" if !defined($dato_columna1);
  9.         $dato_columna2 = "" if !defined($dato_columna2);
  10.         $dato_columna3 = "" if !defined($dato_columna3);
  11.  
  12.         write();
  13.         close (ARCHIVO_TXT);
  14.     }
  15.     else {
  16.         open(ARCHIVO_TXT,">>$dir_Files/$FileTXT.txt") or die "\n Error al actualizar el archivo.\n\n";
  17.  
  18.         $dato_columna1 = "" if !defined($dato_columna1);
  19.         $dato_columna2 = "" if !defined($dato_columna2);
  20.         $dato_columna3 = "" if !defined($dato_columna3);
  21.  
  22.         write();
  23.         close (ARCHIVO_TXT);
  24.     }
  25.  
  26.     return 1;
  27. }
  28.  
  29. format ARCHIVO_TXT_TOP =
  30. @|||||||||||||||||||||||||||||||||||| Pg @<
  31. "$titulo_csv",    $%
  32.  
  33. Columna1          Columna2          Columna3
  34. ----------------- ----------------  -------------------------
  35. .
  36.  
  37. format ARCHIVO_TXT =
  38. @<<<<<<<<< @<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<< $@##.##
  39. $dato_columna1, $dato_columna2, $dato_columna3
  40. .
  41.  
  42.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

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