package Exporter::All; sub import { my @packages = @_; shift @packages; @packages = (caller)[0] unless defined @packages; foreach my $orig (@_) { *{"${orig}::import"} = sub { my $pkg = (caller)[0]; foreach (grep {!/^import|__ANON__|BEGIN|END$/} keys %{"${orig}::"}) { if (defined *{"${pkg}::$_"}) { warn "Warning: symbol $_ already defined in $pkg." } else { *{"${pkg}::$_"} = *{"${orig}::$_"}; } } } } } 1;