in reply to Re: performance - loops, sub refs, symbol tables, and if/elses
in thread performance - loops, sub refs, symbol tables, and if/elses

I'm confused. You want create a new function every time you encounter an object of type 'apple'? Also, it seems the subroutines for each object take a parameter (unless you mean to use & to preserve @_, but he said it should be maintainable ;^) so the new sub would have to be:

*apple_proc = sub { my $item = shift; apple_wash($item); apple_core($item); apple_pulp($item); }; # same for bananas here.

I don't think you can avoid the lexical block here since we still need to test for the type of object before executing the appropriate subroutine:

foreach my $item (@items) { SWITCH: for ($type) { # not sure from the writeup where # $type is supposed to come from /apple/ && do { apple_proc($item); }; /banana/ && do { banana_proc($item); }; warn "Unknown thingy: $type\n"; # Default case } }