Aunque ya entregué esto pero aún me quedo con la curiosidad
de hacerlo funcionar (respóndamne cuando puedan, ya lo entregué y no hay apuro)
Mi programa debe leer un archivo html y entregar una salida
archivo_cargado.spam si encuentra "tinta invisible" (texto con igual color que el fondo) y cambiar el color del texto por cualquier otro que se vea en el archivo de salida(o sea debe entregar un archivo de salida igual que el de entrada, pero con el texto cambiado de color si lo encuentra igual que el fondo).
aqui va mi código(todo comentado):
- Código: Seleccionar todo
#!/usr/local/bin/perl
print "Nombre del Archivo:"; #abre archivo
$archivo = <STDIN>;
open(FHANDLE,$archivo) || die "$!";
$out = "${archivo}.spam"; #nombre arch salida=nombre entrada.spam
open(OUT,>$out)|| die "$!";
while (<FHANDLE>){ #primero: recorre el archivo y busca color de fondo
if ($_ =/bgcolor=["]*(.*\s)["]*/$1/i){ #asigno "color" a $1
$fondo=$1; #$fondo es el color de fondo
next;
}else{ #si no existe bgcolor, por defecto blanco
$fondo="white";
next;
}
}
while (<FHANDLE>){ #recorre el archivo
if (($fondo=="white")||($fondo=="#FFFFFF")){#segundo:analiza fondo blanco,
if (($_==/\scolor=["]*(white)["]*/i)|| #letras blancas
($_==/\scolor=["]*(#FFFFFF)["]*/i) || #y pone letras negras
($_==/text=["]*(white)["]*/i) ||
($_==/text=["]#FFFFFF["]*/i)){
$_=~s/\scolor=["]*(white)["]*/black/i; #para cada caso
$_=~s/\scolor=["]*(#FFFFFF)["]*/black/i;
$_=~s/text=["]*(white)["]*/black/i; #color cadena o hex
$_=~s/text=["]#FFFFFF["]*/black/i; #para text= o color=
next;
}
next;
}
if (($fondo!="white")||($fondo!="#FFFFFF")){#tercero:analiza otros casos
if (($_==/\scolor=["]*(.*)["]*/$2/i) || #pone letras blancas
($_==/text=["]*(.*)["]*/$2/i)){#asigna color encontrado a $2
if ($fondo==$2){ #si color fondo == color encontrado
$_=~s/\scolor=["]*(#FFFFFF)["]*/white/i; #cambia letras
$_=~s/text=["]*(white)["]*/white/i; #a blanco
next;
}
next;
}
next;
}
print OUT "$_\n"; #agrega la fila al archivo de salida
}
close(FHANDLE); #cierra los archivos
close(OUT);
por su atención, gracias
y muchos saludos!!