sub sub_alias (\&;$) { my ($func, $ix) = (@_, 0); sub { $func->($ix, @_) }; # that's sub { ... }'s @_, not sub_alias's @_ } *foo = sub_alias &bar, 1; *blat = sub_alias &bar, 2; *gunk = sub_alias &bar, 3;