Página 1 de 1

Perl format

NotaPublicado: 2013-01-07 10:12 @466
por silva
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!!!

Re: Perl format

NotaPublicado: 2013-01-07 11:21 @514
por explorer
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.004 segundos, usando GeSHi 1.0.8.4