• Publicidad

Eliminar y añadir filas en un fichero plano

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

Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-20 03:43 @196

Hola compañeros,

He eliminado la primera fila de una serie de ficheros planos de la siguiente manera.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my @arxius_U = sort </home/enric/ASCII/2012042000/UGRD10m*.dat>;
  2.     my @arxius_V = sort </home/enric/ASCII/2012042000/VGRD10m*.dat>;
  3.  
  4.     for my $arxius (@arxius_U) {
  5.     tie my @lineas, 'Tie::File', $arxius;
  6.     shift @lineas;
  7.     untie @lineas;    
  8.     }
  9.     for my $arxius (@arxius_V) {
  10.     tie my @lineas, 'Tie::File', $arxius;
  11.     shift @lineas;
  12.     untie @lineas;    
  13.     }
  14.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Se elimina, pero ¿hay alguna manera de agrupar en menos líneas esta estructura? Básicamente estoy doblando los comandos.

Gracias.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Publicidad

Re: Eliminar y añadir filas en un fichero plano

Notapor explorer » 2012-04-20 10:19 @471

Quizás esto te funcione:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @arxius_U = sort </home/enric/ASCII/2012042000/UGRD10m*.dat>;
  2. my @arxius_V = sort </home/enric/ASCII/2012042000/VGRD10m*.dat>;
  3.  
  4. for my $arxius (@arxius_U, @arxius_V) {
  5.     tie my @lineas, 'Tie::File', $arxius;
  6.     shift @lineas;
  7.     untie @lineas;
  8. }
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero a lo mejor no te hace falta hacer esto... ¿Por qué quieres modificar los archivos?
En otros hilos has comentado que vas a leerles para poner su información en tablas.
Entonces... no necesitas modificar los archivos porque puedes eliminar esa línea fácilmente
(valdría un shift() si almacenas el contenido del archivo en un array).
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: Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-20 11:26 @518

Hola, explorer. Ha funcionado, sí. Dando respuesta a tu pregunta, lo que necesito es lo siguiente:

Como ya sabe tengo dos tipos de ficheros de variables diferentes cada 3 horas. Pongamos que solamente tengo 4 ficheros (realmente son más) y que abiertos tienen la siguiente forma (tienen más filas, simplemente es un ejemplo)

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
360 181   360 181   360 181   360 181
-1.06     0.03      -1.23     0.5
-1.05     -1.23     0.2       0.3        
-1.03     -2.0      10.23     -2.23
0.03      -3.12     15.23     -2.34
0.02      1.2       10.22     -2.13        
1.03      10.22     5.21      2.2
10.23     -2.22     -3.15     -6.12
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que necesito es: De cada fichero, eliminar la cabecera, el '360 181' y quedarme con un único fichero .dat. Los ficheros, como ya he puesto, en mis mensajes, salen de estos dos directorios.

my @arxius_U = sort </home/enric/ASCII/2012042000/UGRD10m*.dat>;
my @arxius_V = sort </home/enric/ASCII/2012042000/VGRD10m*.dat>;

Lo que necesito, es agruparlos por parejas en función de la hora, esto ya está, pero además, antes de cada pareja, introducir una línea con la fecha,
20120420 y en algunos casos luego el 000000 o el 120000 en función de la hora del día (lo puedo entrar como argumento).

Es decir, que me quede un fichero.dat con la siguiente forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
20120420 000000
 -1.06  -1.05  -1.03  0.03  0.02  1.03  10.23
  0.03  -1.23  -2.00 -3.12  1.20 10.22  -2.22
20120420 030000
 -1.23   0.20  10.23 15.23 10.22  5.21  -3.15
  0.50   0.30  -2.23 -2.34 -2.13  2.20  -6.12
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El nombre de los ficheros planos en este caso de 4 ficheros sería:

UGRD10m00.dat; VGRD10m00.dat; UGRD10m03.dat; VGRD10m03.dat

Pensaba que necesitaba los ficheros en columnas, pero lo necesito de esta manera.

Gracias.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Re: Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-22 17:22 @765

Hola, alguien puede ayudarme?

He picado el siguiente script que me lee un fichero de componente U y otro de la componente V (realmente tengo, como ya sabes, más ficheros de cada componente) y me saca por pantalla el formato que necesito. Entro argumentos cuando ejecuto el script:

./vent.dat /.../2012042200/UGRD10m00.dat /.../2012042200/VGRD10m00.dat

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
20120420 000000
 -1.06  -1.05  -1.03  0.03  0.02  1.03  10.23
  0.03  -1.23  -2.00 -3.12  1.20 10.22  -2.22
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.10;
  3. use Data::CTable;
  4. use POSIX 'strftime';
  5. use Class::Date qw(date now);
  6. use List::MoreUtils qw<zip each_array>;
  7. use autodie;
  8.  
  9. sub makeHeader {
  10.     my @arr = split( /\//, $_[0] );
  11.     my $printdate = $arr[ @arr - 2 ];
  12.     chop($printdate);
  13.     chop($printdate);
  14.     my @tmp  = split( /\./, $arr[ @arr - 1 ] );
  15.     my @tmp2 = split( /m/,  $tmp[0] );
  16.     my $time = $tmp2[1] . "0000";
  17.     print $printdate. "  " . $time . "\n";
  18. }
  19.  
  20. sub makeTable {
  21.     my $file1 = $_[0];
  22.     my $file2 = $_[1];
  23.     makeHeader($file1);
  24.     my @arrf1;
  25.     my @arrf2;
  26.     my $cnt = 0;
  27.     open FP, "< " . $file1;
  28.     while ( $line = <FP> ) {
  29.         if ( $cnt > 0 ) {
  30.             chomp($line);
  31.             $arrf1[ $cnt++ ] = $line;
  32.         }
  33.         else {
  34.             $cnt++;
  35.         }
  36.     }
  37.     close FP;
  38.     $cnt = 0;
  39.     open FP, "< " . $file2;
  40.     while ( $line = <FP> ) {
  41.         if ( $cnt > 0 ) {
  42.             chomp($line);
  43.             $arrf2[ $cnt++ ] = $line;
  44.         }
  45.         else {
  46.             $cnt++;
  47.         }
  48.     }
  49.     close FP;
  50.     open my $Vent, '>', 'vent2.dat';
  51.     my $i;
  52.     for ( $i = 1; $i < $cnt; $i++ ) {
  53.         print( sprintf( "%.02f", $arrf1[$i] ) . "\t" );
  54.     }
  55.     print "\n";
  56.     for ( $i = 1; $i < $cnt; $i++ ) {
  57.         print( sprintf( "%.02f", $arrf2[$i] ) . "\t" );
  58.     }
  59.     print "\n";
  60.     close $Vent;
  61. }
  62.  
  63. #my $i;
  64. #    for ($i=1; $i<$cnt; $i++) {
  65. #my @archivos_U = sort </home/sam/opt/wwatch3/v2.22/ASCII/2012041600/UGRD10m*.dat>;
  66.  
  67. #my @archivos_V = sort </home/sam/opt/wwatch3/v2.22/ASCII/2012041600/VGRD10m*.dat>;
  68.  
  69. #my @arxius = zip(@arxius_U, @arxius_V),"\n";
  70.  
  71. #foreach $a (my @arxius) {
  72.  
  73. #}
  74. #makeTable (@arxius_U,@arxius_V);
  75. #print (sprintf("%.02f",$arrf2[$i])."\t");
  76. #    };
  77. #    print "\n";
  78. #};
  79. makeTable ($ARGV[0],$ARGV[1]);
  80. #};
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Ahora estoy un poco atascado. Para grabar el fichero vent.dat de salida, ¿cómo lo he de hacer? ¿Y si quiero que me haga el fichero.dat con todos los ficheros que tengo en los directorios?

Gracias y buenas noches.
Última edición por explorer el 2012-04-22 19:25 @851, editado 1 vez en total
Razón: Formateado de código con Perltidy
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

consulta fichero.dat

Notapor enric73 » 2012-04-23 15:03 @668

Hola, ¿alguien puede ayudarme?

He picado el siguiente script que me lee un fichero de componente U y otro de la componente V (realmente tengo, como ya sabes, más ficheros de cada componente) y me saca por pantalla el formato que necesito. Entro argumentos cuando ejecuto el script:

./vent.dat /.../2012042200/UGRD10m00.dat /.../2012042200/VGRD10m00.dat

Este es el formato de salida, y ya me sirve:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
20120420 000000
 -1.06  -1.05  -1.03  0.03  0.02  1.03  10.23
  0.03  -1.23  -2.00 -3.12  1.20 10.22  -2.22
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4





Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.     use v5.10;
  3.     use Data::CTable;
  4.     use POSIX 'strftime';
  5.     use Class::Date qw(date now);
  6.     use List::MoreUtils qw<zip each_array>;
  7.     use autodie;
  8.      
  9.     sub makeHeader {
  10.         my @arr = split( /\//, $_[0] );
  11.         my $printdate = $arr[ @arr - 2 ];
  12.         chop($printdate);
  13.         chop($printdate);
  14.         my @tmp  = split( /\./, $arr[ @arr - 1 ] );
  15.         my @tmp2 = split( /m/,  $tmp[0] );
  16.         my $time = $tmp2[1] . "0000";
  17.         print $printdate. "  " . $time . "\n";
  18.     }
  19.      
  20.     sub makeTable {
  21.         my $file1 = $_[0];
  22.         my $file2 = $_[1];
  23.         makeHeader($file1);
  24.         my @arrf1;
  25.         my @arrf2;
  26.         my $cnt = 0;
  27.         open FP, "< " . $file1;
  28.         while ( $line = <FP> ) {
  29.             if ( $cnt > 0 ) {
  30.                 chomp($line);
  31.                 $arrf1[ $cnt++ ] = $line;
  32.             }
  33.             else {
  34.                 $cnt++;
  35.             }
  36.         }
  37.         close FP;
  38.         $cnt = 0;
  39.         open FP, "< " . $file2;
  40.         while ( $line = <FP> ) {
  41.             if ( $cnt > 0 ) {
  42.                 chomp($line);
  43.                 $arrf2[ $cnt++ ] = $line;
  44.             }
  45.             else {
  46.                 $cnt++;
  47.             }
  48.         }
  49.         close FP;
  50.         open my $Vent, '>', 'vent2.dat';
  51.         my $i;
  52.         for ( $i = 1; $i < $cnt; $i++ ) {
  53.             print( sprintf( "%.02f", $arrf1[$i] ) . "\t" );
  54.         }
  55.         print "\n";
  56.         for ( $i = 1; $i < $cnt; $i++ ) {
  57.             print( sprintf( "%.02f", $arrf2[$i] ) . "\t" );
  58.         }
  59.         print "\n";
  60.         close $Vent;
  61.     }
  62.      
  63.     #my $i;
  64.     #    for ($i=1; $i<$cnt; $i++) {
  65.     #my @archivos_U = sort </home/sam/opt/wwatch3/v2.22/ASCII/2012041600/UGRD10m*.dat>;
  66.      
  67.     #my @archivos_V = sort </home/sam/opt/wwatch3/v2.22/ASCII/2012041600/VGRD10m*.dat>;
  68.      
  69.     #my @arxius = zip(@arxius_U, @arxius_V),"\n";
  70.      
  71.     #foreach $a (my @arxius) {
  72.      
  73.     #}
  74.     #makeTable (@arxius_U,@arxius_V);
  75.     #print (sprintf("%.02f",$arrf2[$i])."\t");
  76.     #    };
  77.     #    print "\n";
  78.     #};
  79.     makeTable ($ARGV[0],$ARGV[1]);
  80.     #};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahora estoy un poco atascado. Para grabar el fichero vent.dat de salida, ¿cómo lo he de hacer? ¿Y si quiero que me haga el fichero.dat con todos los ficheros que tengo en los directorios?

Gracias y buenas noches.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Re: Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-26 08:23 @391

Hola perleros, y especialmente, explorer.

Ya he resuelto mi problema. Os dejo el script por si os interesa. Si alguien puede recortarlo o mejorarlo, que me lo comente, quiero mejorar. Muchas gracias.

El script me deja con el siguiente formato los ficheros .dat de dos variables diferentes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
20120420 000000
 -1.06  -1.05  -1.03  0.03  0.02  1.03  10.23
  0.03  -1.23  -2.00 -3.12  1.20 10.22  -2.22
20120420 030000
 -1.23   0.20  10.23 15.23 10.22  5.21  -3.15
  0.50   0.30  -2.23 -2.34 -2.13  2.20  -6.12
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Lanzo el script con un argumento: ./vent.pl fecha >vent.dat

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.     use Class::Date qw(date now);
  3. #   use List::MoreUtils qw<zip each_array>;
  4.  
  5. # ----------------------------------------------------------------------------
  6. # Arguments del programa:  [yyyymmdd]hh hhmmss
  7. # ----------------------------------------------------------------------------
  8. if (@ARGV != 1 )
  9. {
  10.         us_programa();
  11. }
  12.  
  13. # Data
  14. chomp($flag = $ARGV[0]);
  15.  
  16. my @arxius_U = </home/enric/ASCII/$flag/UGRD10m*.dat>;
  17.  my @arxius_V = </home/enric/ASCII/$flag/VGRD10m*.dat>;
  18.  for ($i=0; $i<@arxius_U; $i++) {
  19.  makeTable($arxius_U[$i], $arxius_V[$i]);
  20.  }
  21.  
  22.  
  23. sub makeHeader {
  24.     my @arr = split (/\//,$_[0]);
  25.     my $printdate = $arr[@arr-2];
  26.     chop($printdate);
  27.     chop($printdate);
  28.     my @tmp = split (/\./,$arr[@arr-1]);
  29.     my @tmp2 = split (/m/,$tmp[0]);
  30.     my $time = $tmp2[1]."0000";
  31.     print $printdate."  ".$time."\n";
  32. };
  33.  
  34. sub makeTable {
  35.     my $file1 = $_[0];
  36.     my $file2 = $_[1];
  37.     makeHeader ($file1);
  38.     my @arrf1;
  39.     my @arrf2;
  40.     my $cnt=0;
  41.     open FP, "< ".$file1;
  42.     while ($line = <FP>) {
  43.         if ($cnt > 0) {
  44.             chomp($line);
  45.             $arrf1[$cnt++] = $line;
  46.         } else
  47.         {
  48.             $cnt++;
  49.         };
  50.     };
  51.     close FP;
  52.     $cnt=0;
  53.     open FP, "< ".$file2;
  54.     while ($line = <FP>) {
  55.         if ($cnt > 0) {
  56.             chomp($line);
  57.             $arrf2[$cnt++] = $line;
  58.         } else {
  59.             $cnt++;
  60.         };
  61.     };
  62.     close FP;
  63.    #open my $Vent, '>', 'vent.dat';
  64.     my $i;
  65.     for ($i=1; $i<$cnt; $i++) {
  66.         print (sprintf("%.02f",$arrf1[$i])."\t");
  67.     };
  68.     print "\n";
  69.     for ($i=1; $i<$cnt; $i++) {
  70.         print (sprintf("%.02f",$arrf2[$i])."\t");
  71.     };
  72.     print "\n";
  73. };
  74.  
  75. sub us_programa
  76. {
  77.         print "Us del programa:  Ventsdat    yyyymmdd[hh] \n";
  78.         print "Ex:               Ventsdat   2009102800 \n";
  79.         exit(1);
  80. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Re: Eliminar y añadir filas en un fichero plano

Notapor explorer » 2012-04-26 15:34 @690

Esta es mi versión, que no se diferencia mucho de la tuya, salvo que le he puesto un par de controles de seguridad, a la hora de tratar los datos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Unificación de ficheros U y V
  4. # Joaquín Ferrero. 2006.04.26
  5. #
  6. # Inspirado por el trabajo de enric73
  7.  
  8. use strict;
  9. use warnings;
  10. use diagnostics;
  11.  
  12. use feature 'say';
  13. use autodie;
  14.  
  15. my $fecha = shift;
  16.  
  17. if (not defined $fecha  or  $fecha !~ /^\d{8,10}$/) {
  18.     print "Us del programa:  $0 yyyymmdd[hh]\n";
  19.     print "Ex:               $0 2009102800\n";
  20.    
  21.     exit 1;
  22. }
  23.  
  24. my @arxius_U = glob('/home/enric/ASCII/$fecha/UGRD10m*.dat');
  25. my @arxius_V = glob('/home/enric/ASCII/$fecha/VGRD10m*.dat');
  26.  
  27. $fecha = substr $fecha, 0, 8;   # Quitamos la hora, si la hubiera
  28.  
  29. open my $VENT, '>', 'vent.dat';
  30.  
  31. for (my $i = 0; $i < @arxius_U; $i++) {
  32.  
  33.     my($hora_U) = $arxius_U[$i] =~ /(\d+)[.]dat$/;
  34.     my($hora_V) = $arxius_V[$i] =~ /(\d+)[.]dat$/;
  35.  
  36.     die "ERROR: No coincidencia en la hora de los archivos $arxius_U[$i] y $arxius_V[$i]\n"
  37.         if $hora_U ne $hora_V;
  38.  
  39.     open my $FH_U, '<', $arxius_U[$i];
  40.     open my $FH_V, '<', $arxius_V[$i];
  41.  
  42.     my @U = readline $FH_U;
  43.     my @V = readline $FH_V;
  44.  
  45.     close $FH_U;
  46.     close $FH_V;
  47.  
  48.     shift @U;         # Fuera cabeceras
  49.     shift @V;
  50.  
  51.     die "ERROR: No hay el mismo número de datos en $arxius_U[$i] y $arxius_V[$i]\n"
  52.         if @U != @V;
  53.  
  54.     say $VENT "$fecha $hora_U", '0000';
  55.     say $VENT join "\t", map { sprintf "%.02f", $_ } @U;
  56.     say $VENT join "\t", map { sprintf "%.02f", $_ } @V;
  57. }
  58.  
  59. close $VENT;
Coloreado en 0.002 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-27 07:43 @363

Hola explorer,

Muchas gracias por tu script, también lo he probado, y sale el mismo resultado :D . Un par de consultas de tu script.

En
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my($hora_U) = $arxius_U[$i] =~ /(\d+)[.]dat$/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Qué hace =~ /(\d+)[.]dat$/?

Y luego, en
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $fecha = shift;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿shift() recoge el argumento?

Y en
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. shift @U;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Se carga la primera línea, la cabecera?

Muchas gracias, la próxima vez ya trataré otro tema.
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Re: Eliminar y añadir filas en un fichero plano

Notapor explorer » 2012-04-27 09:23 @433

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my($hora_U) = $arxius_U[$i] =~ /(\d+)[.]dat$/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

quiere decir: «Busca por un conjunto de dígitos (\d+) que están justo antes de una cadena '.dat' que está pegada al final ($) de $arxius_U[$i], los capturas (por acción de los paréntesis alrededor de \d+) y el resultado, como está en contexto lista (por la acción de los paréntesis alrededor de $hora_U), es la lista de elementos capturados. Como solo hemos capturado un grupo de dígitos, se devuelve ese valor y se almacena en $hora_U».

El resultado es que en $hora_U tenemos la hora que aparece al final del nombre del archivo.

shift() extrae un elemento por la parte delantera de un array, y lo devuelve. Si no se indica el array, toma @_ o @ARGV según esté dentro o no de una subrutina. En este caso, sí, estamos leyendo el argumento del programa, extrayendo el primer valor de @ARGV.

shift @U hace también lo mismo: extrae el primer valor de @U. Como es la cabecera, y no nos interesa, pues es una forma de sacarla de @U, donde quedarán el resto de valores.

Más información en perldoc -f shift.
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: Eliminar y añadir filas en un fichero plano

Notapor enric73 » 2012-04-27 14:48 @658

Muchas gracias, explorer, por los comentarios,

Y si tuvieras dos argumentos de entrada, ¿cómo utilizarías el shift()?

Imaginemos que tenemos la fecha y horas, $fecha y $hora.

Para un argumento sería esta linea, ¿y para dos?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  my $fecha = shift;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Saludos y buen fin de semana.

Enric73
enric73
Perlero nuevo
Perlero nuevo
 
Mensajes: 154
Registrado: 2012-03-16 06:27 @311

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 31 invitados

cron