Foros del Web » Programación para mayores de 30 ;) » Programación General »

Limpiar Cadenas

Estas en el tema de Limpiar Cadenas en el foro de Programación General en Foros del Web. Hola tengo este código: #! C:\strawberry\perl\bin\perl.exe sub limpiar_contenido{ local (*cadena) = @_; substr($cadena,24); #Corto la linea a partir del caracter 24 if ($cadena == "comparacion") ...
  #1 (permalink)  
Antiguo 09/07/2010, 02:16
Avatar de MeXiCaN  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona - España , Morelia - México
Mensajes: 162
Antigüedad: 19 años, 10 meses
Puntos: 0
Limpiar Cadenas

Hola tengo este código:

#! C:\strawberry\perl\bin\perl.exe

sub limpiar_contenido{
local (*cadena) = @_;
substr($cadena,24); #Corto la linea a partir del caracter 24
if ($cadena == "comparacion") # si la cadena es igual a comparación no devuelvo nada
{
return;
}
else
{
$cadena >> "fichero salida"; #si la cadena es diferenta a comparación la añado en un fichero de salida.
}
return;
}

my $file = "fichero a abrir";
open(ENTRADA, "<$file") || die "no se puede abrir el archivo\n";
while ($linea =<ENTRADA>) {
limpiar_contenido(*linea);
}
close(DATA);


Sin embargo no hace nada y tampoco me da ningún tipo de error. ¿Alguien ve el error? (Soy novato con perl)

Saludos y gracias.
__________________
Un saludo, MeXiCaN :golpeado: :adios:

Poco es tanto, cuando poco necesitas. E.Bunbury

Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán.
  #2 (permalink)  
Antiguo 09/07/2010, 02:36
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 17 años, 11 meses
Puntos: 11
Respuesta: Limpiar Cadenas

El operador '>>' es propia del C++, no de Perl.
__________________
JF^D Perl Programming en Español
  #3 (permalink)  
Antiguo 10/07/2010, 09:17
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Limpiar Cadenas

La verdad que tampoco te va a funcionar esa cosa que hiciste, entre otros, para comparar cadenas, perl no utiliza == o != sino eq y ne respectivamente, probá con esto:

Código PHP:
my $file "fichero a abrir";
my $save "fichero a guardar";
open(ENTRADA"<$file") || die "$!\n";
open(SALIDA">$save") || die "$!\n";
while (<
ENTRADA>) {
    
next if /^.{24}comparacion/o;
    print 
SALIDA;
}
close(ENTRADA);
close(SALIDA); 
  #4 (permalink)  
Antiguo 02/08/2010, 12:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Limpiar Cadenas

Cita:
Iniciado por jferrero Ver Mensaje
El operador '>>' es propia del C++, no de Perl.
El >> se usa para mandar la informacion al archivo pero que escriba lo nuevo al final del archivo y que la informacion que tenia el archivo siga estando disponible

Saludos!
  #5 (permalink)  
Antiguo 02/08/2010, 13:03
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 17 años, 11 meses
Puntos: 11
Respuesta: Limpiar Cadenas

Cita:
Iniciado por Libras Ver Mensaje
El >> se usa para mandar la informacion al archivo pero que escriba lo nuevo al final del archivo y que la informacion que tenia el archivo siga estando disponible
Ese significado es válido en entornos Shell, pero no en Perl, que es lo que MeXiCaN había escrito.

'>>' no es un operador para agregar al final del fichero, ni siquiera escribiéndolo como se usa en C++, si no que realiza el desplazamiento de bits dentro de un entero (igual que en el lenguaje C). Y eso, me parece, no es lo que quería hacer MeXiCaN.

Hay que prestar atención al lenguaje del que estamos hablando, solo eso.

Perl tiene estructuras de muchos lenguajes, pero "no exactamente igual".

Saludos.
__________________
JF^D Perl Programming en Español
  #6 (permalink)  
Antiguo 07/08/2010, 22:52
 
Fecha de Ingreso: marzo-2008
Ubicación: Guatemala
Mensajes: 76
Antigüedad: 16 años
Puntos: 0
Respuesta: Limpiar Cadenas

Mexican el código no está bien....

primero para comparar no se usa == en perl tal como te lo han dicho los colegas, se usa eq, equivalente a equal, igual... el otro sería ne, o not equal.... osea eq - == y ne equivale a !==

lo otro es que acá

Cita:
$cadena >> "fichero salida"; #si la cadena es diferenta a comparación la añado en un fichero de salida.
debiera ir la operación para abrir, escribir y cerrar el archivo pero no la ti enes, la tienes fuera, podrías modificarlo para ponerla en ése lugar o utilizar una llamada a subrutina.

Y finalmente la parte donde "escribes" en el archivo está mal también.

Cita:
my $file = "fichero a abrir";
open(ENTRADA, "<$file") || die "no se puede abrir el archivo\n";
while ($linea =<ENTRADA>) {
limpiar_contenido(*linea);
}
close(DATA);
debiera ser algo así:

open(FILE,">nombredetuarchivo");
flock(FILE,2);
print FILE "loquequieresgrabar";
close(FILE);

y listo. El > es para crear y escribir comenzando de cero. El >> hace lo mismo pero APPEND, osea que cada vez que escribes AGREGA info.

Suerte

Etiquetas: cadenas, limpiar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.