I just 'tidied up' some code from the form in sub_a (below) to the form in sub_b ...
my $sub = shift or die "must specify 'A' or 'B'\n";
if(uc($sub) eq 'A') {
sub_a();
}
else {
sub_b();
}
exit;
sub sub_a {
my $hashref = hashref();
while(my($k, $v) = each %{ $hashref }) {
print "$k => $v\n";
}
}
sub sub_b {
while(my($k, $v) = each %{ hashref() }) {
print "$k => $v\n";
}
}
sub hashref {
return { a => 1, b => 2, c => 3 };
}
I was surprised when my modified routine behaved in a different way to the original. When I thought about it, I realised what was going on and slapped myself. It's probably obvious to everyone else though.