frobnitz( $HoA{Foo} ) if $HoA{Foo};
for my $key ( keys %HoA ) {
frobnitz( $HoA{$key} ) if $key ne "Foo";
}
####
my %HoA= (
D=>[4], E=>[5], F=>[6], Foo=>[3], G=>[7], H=>[8],
);
{
local( $HoA{Foo} )= $HoA{Foo};
for my $av ( delete $HoA{Foo}, values %HoA ) {
print $av->[0], $/ if $av;
}
}
print $HoA{Foo}[0], $/;
####
sub FirstIfKeys {
my $hv= pop @_;
my %k;
@k{ keys %$hv }= (1) x @k;
my @k;
for my $key ( @_ ) {
push @k, $key if delete $k{$key};
}
return @k, keys %k;
}
for my $key ( FirstIfKeys( "Foo", \%HoA ) ) {
...
}