package Signatures; sub import { no warnings; no strict; my $package = caller; for (keys %{ $package . '::' }) { next unless exists &{ $package . "::$_" }; my $sub = \ &{ $package . "::$_" }; next unless my $proto = prototype $sub; *{ $package . "::$_" } = eval qq { sub { package $package; local ($proto) = \@_; \$sub->() } } } }