[caracas-pm] problemas con script de hash

Cesar Mendoza mendoza at kitiara.org
Wed May 25 11:48:27 PDT 2005


Hola,

Respondiendo a tu pregunta, el script imprime como se va llenando el
hash, si solo quieres ver el resultado final, tienes que sacar el
código:

for my $key(sort keys %Datos){
    print "$key: $Datos{$key}\n";
}

fuera del loop.

Otra cosa, todo el código del foreach se podría reemplazar por
algo así:

%Datos = map { /([A-Z])(\d+)/; $1 => $2 } grep { $_ ne '' } split %/([A-Z]\d+)/, $dat3;

Se deja como tarea el porque funciona.

Bye
Cesar Mendoza
http://www.kitiara.org
--
"First they tell you, you're wrong and they can prove it; 
then they tell you, you're right but it isn't important; 
then they tell you, it's important but they knew it all along."
 --Charles Kettering

On Tue, May 24, 2005 at 12:21:24PM -0400, Manuel Sanguino wrote:
>   bueno gracias a KiDD del foro perl en español por el script que me
> envio ta muy bueno ... sin embargo cuando lo utilizo en mi script,  en
> mi programa script, me da resultados erroneos.
> 
> el script
> 
>   while ( <$remote> )
>         {
>         $count++;
>         $dat1=$_;
>         chomp($dat1);
>         $dat2=$dat2.$dat1;
>         push(@arreglo,$dat2);
>         $dat3=pop(@arreglo);
> 
>                                 #acomodar datos en una arreglo hash
> 
>           foreach(split //, $dat3){     #itero carater por caracter
> 
>                 print"$dat3\n";
> 
>                 if(/([A-Z])/){
>                         $Datos{$_} = '';
>                         $memoria = $1;
>                         }
> 
>                  elsif(/(\d)/){
>                         $Datos{$memoria} .= $1;
>                         }
>                 for my $key(sort keys %Datos){
>                           print "$key: $Datos{$key}\n";
>                         }
> 
>         }
> }
> 
> 
> 
> este script lee el ultimo valor de una arreglo ..el ultimo valor tiene
> algo como esto
> 
> A111B222C333D444E555 
> 
> y luego con este valor hace un split  y acomoda cada letra con los
> valores  en un arreglo hash
> 
> bueno ahy un error  observen la salida ademas que me da otro valor q
> no se de dond sale ...pero la verdad no me importa mucho... lo curioso
> es que ese valor si lo imprime siempre
> 
> A111B222C333D4444
> : 0
> A: 111
> B: 222
> C: 333
> D:						aca faltaron todos los varlores de D
> A111B222C333D4444
> : 0
> A: 111
> B: 222
> C: 333
> D: 4							aca faltaron  2 valores de D
> A111B222C333D4444			observen que la variable los tiene
> : 0
> A: 111			
> B: 222
> C: 333
> D: 44				aca falto un valor de D y 
> A111B222C333D4444
> : 0
> A: 111
> B: 222
> C: 333
> D: 444
> A111B222C333D4444
> : 0
> A: 111
> B: 222
> C: 333
> D: 444
> A111B222C333D4444
> : 0
> A:
> B: 222
> C: 333
> D: 444
> A111B222C333D4444
> : 0
> A: 1
> B: 222
> C: 333
> D: 444
> 
> 
> como pueden ver a veces me imprime todos los valores y a veces no... a
> que se debe esto??? porque ???? y observen q la variable tiene $dat3
> todos lo valores ...???
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm



More information about the caracas-pm mailing list