use strict; my @list = qw/ box cow dog apple ant/; sub mksub { my $count = 0; my $s1 = sub { return $count }; # an inspector as a closure # and another closure my $s2 = sub { $count++; return $_[0] cmp $_[1]; }; return ( $s1, $s2 ); } my ( $get_count, $compare, ); ( $get_count, $compare, ) = mksub(); print sort { $compare->( $a, $b ) } @list; print "\n"; print $get_count->(), "\n"; print "\n"; print sort { $compare->( $a, $b ) } @list; print "\n"; print $get_count->(), "\n"; print "\n"; ( $get_count, $compare, ) = mksub(); print sort { $compare->( $a, $b ) } @list; print "\n"; print $get_count->(), "\n"; print "\n";