• Publicidad

El uso de 'cat'

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

El uso de 'cat'

Notapor Kiloko » 2007-11-29 14:40 @653

Saludos Perleros. Aquí con la molestia de siempre,
necesito hacer un programa que me agrupe dos archivos como el cat.

Pero en mi búsqueda por Google, encuentro algunas páginas, pero mi red es tan especial que no me deja verlas, algún ejemplo que me puedan brindar, o el código que sale en la página de CPAN.

Un saludo... :idea:
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Publicidad

Notapor Norther » 2007-11-29 14:54 @662

Aquí tienes perfectamente explicado exactamente eso:

http://www.devdaily.com/perl/edu/articles/pl010010/

Avísame si no puedes verlo para pegártelo ;)
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor Kiloko » 2007-11-29 16:35 @733

mmmmmmm :?
mmmmmmmm :?

Ahora sí que me quedé con la cara de what???

Lo que se propone en esa página es hacer una lectura de los archivos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
#
#  PROGRAM: cat
#  for each arg, open the file and print it

   FILE: foreach (@ARGV) {

      open(FILE, $_) || ((warn "Can't open file $_\n"), next FILE);

      while (<FILE>) {
         print;
      }
      close(FILE);
   }
 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Aquí yo veo dos problemas: ¿qué pasa cuando son más de mil lineas por archivo? Por tres o más archivos... y segunda: solo los lee, nunca hace la concatenación (unión) cat, ??? ¿Qué paso? ¿Me perdí en alguna parte? ¿o como está la cosa?

Saludos.
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-11-29 16:52 @744

:P je je, ya vi por dónde iba la cosa, ya quedó.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
#
#  PROGRAM: cat
#  for each arg, open the file and print it

   FILE: foreach (@ARGV) {

      open(FILE, $_) || ((warn "Can't open file $_\n"), next FILE);
 
      while (<FILE>)
     
      {
      open (Data, ">>final.dat");
      print Data "$_";
     
     
      }
      close(FILE);
      close (Data);
   }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

:P
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Norther » 2007-11-29 16:58 @749

Genial :D
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor explorer » 2007-11-29 17:31 @771

Pues no, Kiloko...

El primer código que pusiste es el correcto... es una versión Perl con un funcionamiento idéntico a cat.

Código: Seleccionar todo
cat.pl archivo1 archivo2 > final.dat


En cambio, el segundo código tiene un grave problema: la salida siempre es hacia el mismo fichero.

Y no hablemos de que la línea del open está en el peor sitio posible :-) Jejeje...
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

Notapor Kiloko » 2007-11-29 17:46 @782

Una duda: yo hago mi archivo con el programa de Perl y lo llamo final.dat.

De igual forma lo hago con cat y lo llamo final2.dat.

Veo que tienen el mismo tamaño y de igual forma veo que las lineas por wc * son iguales.

Pero si los abro con el editor de texto en la parte inferior uno dice:

Ln2442 Col205

y el otro dice

Ln 1976 Col 153

Mi pregunta es esta: ¿puede dar pie a que realmente no sean iguales? ¿o qué está pasando? :?

##### Jejeje. a que explorer ### ya hacía tiempo que no recibía tus comentarios bueno hace tiempo que no posteaba... es que es más o menos así como lo quería el caso es que siempre van a ser tres archivos y siempre va a ser un archivo al final; se que no se ve muy elegante, pero haber dame tu opinión, o sugerencia de cómo poder mejorarlo,

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use POSIX;
#**************************************************
my $AYER = strftime("%Y%m%d", localtime(time - 86400));
#**************************************************
$AYER1= "rec_cero_$AYER.txt";
$AYER2= "rec_uno_$AYER.txt";
$AYER3= "rec_dos_$AYER.txt";

foreach ($AYER1 ,$AYER2 ,$AYER3)
{
 open(FILE, $_) || ((warn "Can't open file $_\n"));
   while (<FILE>)  
      {
      open (Data, ">>final.dat");
      print Data "$_";
       }
      open (Data, ">>final.dat");
      print Data "commit";    
      close(FILE);
      close (Data);
   }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-11-29 17:59 @791

Compáralos con un diff...
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

Notapor Kiloko » 2007-11-30 11:41 @528

:lol:
Comparado.

Una pregunta, lo que pasa es que ese archivo se va a insertar en una base de datos, pero tengo una duda, tengo mi programa para conectarme a la base de datos, pero :?: ¿cómo inserto un archivo, que ya contiene las líneas? Manualmente entro a sqlplus y después tecleo @nombre.extencion, pero en Perl ¿cómo seria? Me he quedado atorado en esta parte.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#Conectamos con la BD, si no podemos, ponemos un mensaje de error
my $dbh = DBI->connect("DBI:$driver:$base_datos",$usuario,$clave) || die "\n Error al abrir la base datos Intenta de nuevo: $DBI::errstr\n";
#Decimos que hemos conectado
print "\nSe ha conectado a $base_datos en la BD ES LA OSTIA \n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-11-30 16:18 @721

¿Has visto el tutorial?
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

Siguiente

Volver a Básico

¿Quién está conectado?

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