Not quite as fancy as Eric's version, but should get the job done, too:
#!/usr/bin/perl
use strict;
use warnings;
my %hoh = (
bar => {value => 42},
baz => {value => 199},
foo => {value => 3},
);
my $joe = shift @ARGV;
my $sortfunctions = {
numbers => sub { $hoh{$a}{value} <=> $hoh{$b}{value} },
letters => sub { $hoh{$a}{value} cmp $hoh{$b}{value} },
};
my $sortfunc = $sortfunctions->{$joe};
foreach my $key (sort $sortfunc keys %hoh) {
print "$key: $hoh{$key}{value}\n";
}
__END__
$ ./818578.pl letters
baz: 199
foo: 3
bar: 42
$ ./818578.pl numbers
foo: 3
bar: 42
baz: 199
|