sub steal{
my $filename = shift or die "No file name!\n";
-e $filename or die "No such file!\n";
if(@_){
local $/ = 1;
open PROGRAM_FILE,"<",$filename;
my $code = <PROGRAM_FILE>;
close PROGRAM_FILE;
my $package_name;
while($package_name = "temp_package_".int(rand(100000000))){
last unless defined %{$package_name."::"};
}
my $precode = <<END_OF_PRECODE;
package $package_name;
return 1;
END_OF_PRECODE
$code = $precode.$code;
eval $code;
warn $@ if $@;
for(@_){
my $function_name = $_;
*{(caller)[0]."::".$function_name} = \&{$package_name."::".$function_name};
}
}
}