John W. Krahn wrote:
Richard Lee wrote:

something is wrong with this..

say %yahoo's key contains the variable , X

I wanted to go through the @array which has array of hashes... to see if one of the value is equal to
X and if it is, wanted to assign the key of the @array to $ex_var..

Tracing the program, it only goes through 6 lines of keys in @t_array (random keys) (it has 89 keys total).. what am i doing wrong?




     while (my ($keys,$values) = each(%yahoo) ) {
             no strict 'refs';
             MF: for my $i (0 .. $#t_array) {
                     for ( my($k,$v) = each(%{ $t_array[$i] } ) ) {

The for loop is not doing what you appear to think it is supposed to be doing:

$ perl -le'
my %hash = "A" .. "Z";
for my $c ( 1 .. 3 ) {
    my $i;
    for ( my ( $k, $v ) = each %hash ) {
        print "$c ", ++$i, qq[: \$_ = "$_"   \$k = "$k"   \$v = "$v"];
        }
    }
'
1 1: $_ = "S"   $k = "S"   $v = "T"
1 2: $_ = "T"   $k = "S"   $v = "T"
2 1: $_ = "A"   $k = "A"   $v = "B"
2 2: $_ = "B"   $k = "A"   $v = "B"
3 1: $_ = "O"   $k = "O"   $v = "P"
3 2: $_ = "P"   $k = "O"   $v = "P"


You need to use each() in a while loop instead.


                         my $keys_b = qr/$keys/;
                         if ( $v  =~ m/$keys_b/ ) {
                             $ex_var = $k;
                             last MF;
                     }
                  }
             }


John



     while (my ($keys,$values) = each(%yahoo) ) {
             no strict 'refs';
             MF: for my $i (0 .. $#t_array) {
                    for ( my($k,$v) = each %{ $t_array[$i] } ) {
                    #  for ( my($k,$v) = each %t_array ) {
                         my $keys_b = qr/$keys/;
                         if ( $v  =~ m/$keys_b/ ) {
                             $ex_var = $k;
                             last MF;
                     }
                  }
             }


while @t_array contains

%something = (
           "something1" => "123",
           "something2" => "234",
               ..... so and on
);

%something_now = (
           "something11" => '123123',
           "something222" => '2134',
)

@t_array = (\%something, \%someting_now)

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to