One weirdness I encountered recently with nested functions:
sub a {
my $v;
sub b {
# captures only the first
# instance of $v
}
}
This is because named subroutines are created once and variable captures are resolved at that time. I expected the more normal capture semantics you get with anonymous subs, like sub a {
my $v;
my $b = sub {
# a new $b each time
# captures each $v
}
}