keys
keys - retrieve list of indices from a hash
keys ASSOC_ARRAY
Returns a normal array consisting of all the keys of the named
associative array. (In a scalar context, returns the number of keys.)
The keys are returned in an apparently random order, but it is the same
order as either the
values()
or
each()
function produces (given that
the associative array has not been modified). Here is yet another way
to print your environment:
@keys = keys %ENV;
@values = values %ENV;
while ($#keys >= 0) {
print pop(@keys), '=', pop(@values), "\n";
}
or how about sorted by key:
foreach $key (sort(keys %ENV)) {
print $key, '=', $ENV{$key}, "\n";
}
To sort an array by value, you'll need to use a
sort{}
function. Here's a descending numeric sort of a hash by its values:
foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash)) {
printf "%4d %s\n", $hash{$key}, $key;
}