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;