On Fri, Apr 29, 2011 at 2:44 PM, Agnello George <agnello.dso...@gmail.com> wrote: > On Fri, Apr 29, 2011 at 2:33 PM, Rob Dixon <rob.di...@gmx.com> wrote: >> On 29/04/2011 09:47, Agnello George wrote: >>> >>> my %retrn = ( 0 => { 0 => ' successful<br>'}, >>> 1 => { 1 => 'insufficient<br>'}, >>> 2 => { 2 => 'txtfile missing<br>'}, >>> 3 => { 3 => 'bad dir<br>'}, >>> ); >>> >>> ( i know this hash looks funny , but is the hash i got to use ) >>> >>> suppose $stdout = 0; >>> >>> >>> i need to get the key >>> >>> my key = keys %{ $retrn{ $stdout} } ; >> >> I assume this should read >> >> my $key = keys %{ $retrn{ $stdout} } ; >> >> In list context the keys operator returns the list of all keys of a >> hash. But in a scalar context, as here, it returns the number of keys >> instead. I assume you are getting a value of 1 in $key when you are >> expecting 0? >> >> If there is always only a single key then you can write instead >> >> my ($key) = keys %{ $retrn{ $stdout} } ; >> >> which will extract the first key of the list returned by keys. If you >> can't guarantee that then you should assign to an array instead: >> >> my @keys = keys %{ $retrn{ $stdout} } ; >> > > Ok , i see my fault , so i can also do something like this right > > if (stdout == (%$retrn{$stdout}) ) { > ##so some code > } >
sorry i ment if (stdout == keys (%$retrn{$stdout}) ) { ##so some code } -- Regards Agnello D'souza -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/