package Comp; use strict qw( vars subs ); use warnings; sub import { my( $class ) = caller(); my $comp; $comp = sub { my( $sub, $var, $list, @x ) = @_; my @l; for ( $list->() ) { ${$class.'::'.$var} = $_; push @l, @x ? $comp->( $sub, @x ) : $sub->(); } # for return @l; }; *{$class.'::comp'} = $comp; } # import 1;