[perl] Manejando HASHES
Olivares, Cesar (CORP, Consultant)
cesar.olivares@corporate.ge.com
Fri, 4 Aug 2000 11:37:14 -0400
Qui'hubo RAZA!! o mejor dicho, C'omo est'an todos?
En la espera de que todos estemos contentos aqu'i les va esta pregunta de
principiantes con 'Hashes':
Estoy en un asunto donde leo un directorio; y creo una variable hash.
my @Ls = `ls`;
my %Filegz = ();
El primer comando me dar'ia los archivos contenidos en el directorio, los
cuales algunos son comprimidos (sufijo '.gz') y otros no.
Posteriorm'. mediante un 'for each ...' trato de depurar el directorio e
identificar aquellos con sufijo. '.gz' de la siguiente forma:
my @OutF;
foreach (@Ls) {
if (/.gz/) { ## Si el archivo posee el sufijo ".gz"
push (@OutF, substr($_,0,length($_)-3);
$Filegz{$_} = "TRUE"; ## Alimento al HASH posici'on $_ con un TRUE
} else {
push (@OutF, $_);
$Filegz{$_} = "FALSE"; ## Alimento al HASH posici'on $_ con un
FALSE
}
}
Lo anterior para que al momento de manilpular el archivo pueda, a trav'es
del HASH, identificar si el archivo es un comprimido o no.
for each (@OutF) {
if ($Filegz{$_} eq "TRUE") ## si el HASH contiene un TRUE en posici'on
$_
system ("/usr/bin/gunzip $_"); ## descompr'imelo
}else{ ## de lo contrario
system ("/usr/bin/gzip $_"); ## compr'imelo
}
}
Pero aqui me doy cuenta de que los HASHES no manipulan los datos de manera
literal, es decir, que el valor contenido en alguna posici'on (sub'indice)
pueda ser usado para control de bucles o estatutos de verdadero/falso. Pero
es exactamente lo que necesito, ya lo intent'e usando la funci'on HASH
'values' (aunado a "keys") pero necesito conocer un "valor" a partir de una
"llave", como si fuera un vector (esto me ser'ia 'util para m'ultiples
prop'ositos).
RAZA d'enme su opini'on por favor, y digan si estoy bi'en en mi
planteamiento con los dichosos HASHES o de plano digan si la estoy
calabazeando fuera del maizal :-(
--Salu2 a to2,
C. Olivares. EL BATO
p.d. El script intenta ser un "algoritmo" del original.
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : unsubscribe perl