package Steal;

our $VERSION = "1.0";

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};
       }
   }
}

*{(caller)[0]."::steal"} = \&steal;