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} } ;
HTH,
Rob
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/