Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Truncar registros de un archivo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mie Ago 13, 2008 5:02 pm
dandarc_perl
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2008
Mensajes: 9
Truncar registros de un archivo Responder citando

Hola, soy nuevo en Perl.

Tengo un archivo con longitud de registro de 400 caracteres y quiero truncarlo a 200 caracteres, ¿Alguna idea de cómo hacerlo con Perl?.

Gracias de antemano.

Suerte.
Mensaje Mie Ago 13, 2008 5:14 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

Bienvenido a los foros de Perl en Español, dandarc_perl.

Debes usar la función truncate().

Perl:
truncate "fichero.txt", 200;
Mensaje Jue Ago 14, 2008 8:43 am
dandarc_perl
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2008
Mensajes: 9
Ya lo intenté y no funcionó Responder citando

Ya puse el truncate() y me borró los registros, este es mi código:

Perl:
#! /usr/local/bin/perl
open( ARCHTRUN, "+>/valida/cdrstemp/prueba");
truncate ARCHTRUN, 200;
close ARCHTRUN;


¿Alguna idea de por qué me está borrando los registros?
Mensaje Jue Ago 14, 2008 9:19 am
dandarc_perl
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2008
Mensajes: 9
Ya lo logré, pero no era lo que esperaba Responder citando

Ya logré truncar el archivo, pero yo creía que la función iba a truncar registro cada registro a 200 caracteres pero lo que hizo fue truncarme el archivo a 200 caracteres, jajaja, (creo que fui bastante ingenuo Embarassed ), ahora tendré que barrer el archivo y truncar registro por registro.

Se aceptan sugerencias.

Gracias
Mensaje Jue Ago 14, 2008 9:51 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

Disculpas, entendí mal la pregunta. Creí que querías truncar todo el fichero, y en realidad solo quieres trucar los registros.

Ese truncamiento de registros lo puedes hacer con substr().
Mensaje Jue Ago 14, 2008 10:06 am
teco000
Perlero Nuevo
Perlero Nuevo
Registrado: 29 May 2008
Mensajes: 33
Ubicación: Guatemala
Responder citando

Perl:
#!/usr/bin/perl

use warnings;
use strict;

open(A,"/prueba.txt")or die $!;
while ( my $linea = <A> ) {

    my $a= substr($linea,0,5);
    print"$a\n";


}

close A;
Mensaje Jue Ago 14, 2008 10:35 am
dandarc_perl
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2008
Mensajes: 9
Responder citando

Gracias explorer y tec000, ya me aparecen los registros truncados, pero ahora, cómo le hago para reemplazar los registros originales por los nuevos truncados, si se puede, y si no se puede, ¿cómo hago para pasar los registros a otro archivo nuevo?.

Gracias
Mensaje Jue Ago 14, 2008 11:02 am
teco000
Perlero Nuevo
Perlero Nuevo
Registrado: 29 May 2008
Mensajes: 33
Ubicación: Guatemala
Responder citando

LO DE REEMPLAZAR NO TE ENTENDÍ, AQUÍ TE DEJO PARA COPIARLOS A OTRO ARCHIVO


Perl:
#!/usr/bin/perl
use warnings;
use strict;

open(A,"prueba.txt")or die $!;
while ( my $linea = <A> ) {
    open(B,">>pruebab.txt")or die $!;
    my $a= substr($linea,0,5);
    printf B "$a\n";
}

close A;
close B;
Mensaje Jue Ago 14, 2008 3:13 pm
dandarc_perl
Perlero Nuevo
Perlero Nuevo
Registrado: 13 Ago 2008
Mensajes: 9
Responder citando

Excelente teco000 muchas gracias.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group