Página 1 de 1

Redirigir la salida de print a un array

NotaPublicado: 2016-08-31 05:47 @282
por Arianss90
¡Muy buenas! Soy nuevo en el foro, aunque llevo un tiempo leyendo respuestas para resolver alguna duda puntual que me haya podido surgir. Llevo muy poco tiempo programando en Perl y mi base de programación tampoco es demasiado potente.

Necesito guardar el string entero que está imprimiendo (necesito que imprima también) para poderlo recuperar más adelante.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.        
  2. if ( @lines1 eq @lines2 ) {
  3.  
  4.     for ( $i = 0; $i < @lines1; $i++ ) {
  5.  
  6.         my @var1 = split( /\s+/, $lines1[$i] );
  7.         my @var2 = split( /\s+/, $lines2[$i] );
  8.  
  9.         if ( $var1[ $_[0] ] eq $var2[ $_[0] ] ) {
  10.             print "Line #" . ( $i + 1 ) . " is equal in both documents\n";
  11.         }
  12.  
  13.         else {                                 #NECESITO GUARDAR ESTOS DOS PRINTS PARA PODERLOS MANIPULAR POSTERIORMENTE
  14.             print "\nLine #" . ( $i + 1 ) . " is different between documents\n";
  15.             print "This is the value from file 1: '"
  16.                 . $var1[ $_[0] ]
  17.                 . "' and this is the value from file 2: '"
  18.                 . $var2[ $_[0] ] . "'\n\n";
  19.         }
  20.     }
  21. }
  22. else {                                         #NECESITO GUARDAR ESTOS 3 PRINTS PARA PODERLOS MANIPULAR POSTERIORMENTE
  23.     print "The number of lines in each file do not match.\n";
  24.     print "\n\nTotal number of lines in file 1: " . @lines1 . "\n";
  25.     print "Total number of lines in file 2: " . @lines2 . "\n\n";
  26. }
  27.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Espero haber creado el mensaje de forma correcta, ¡¡es mi primera vez!!
¡Un saludo y muchas gracias de antemano!

Re: Redirigir la salida de print a un array

NotaPublicado: 2016-08-31 15:08 @672
por explorer
Bienvenido a los foros de Perl en Español, Arianss90.

Un detalle antes. En la línea 2 estás haciendo una comparación alfanumérica entre los dos números resultantes de las cantidades de elementos de los array @lines1 y @lines2. En este caso, es mejor usar el comparador numérico '=='.

Lo que puedes hacer es guardar el valor de $var1[ $_[0] ] en un array, y lo mismo para $var2[ $_[0] ]. Algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.             push @lineas_distintas_1, $var1[ $_[0] ];
  2.             push @lineas_distintas_2, $var2[ $_[0] ];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Luego, con otro bucle, puedes recorrerles, igual que haces con @lines1.

Re: Redirigir la salida de print a un array

NotaPublicado: 2016-09-02 05:20 @263
por Arianss90
Entiendo, ¡así lo haré! Gracias por la ayuda, un saludo.