package X; sub new { my $self = shift; printf "new() v1\n"; return bless {}, $self; } sub blah { printf "blah v1\n"; } 1; #### package X; sub new { my $self = shift; printf "new() v2\n"; return bless {}, $self; } sub blah { printf "blah v2\n"; } 1; #### #!/usr/bin/perl use lib '.'; use X; my $x1 = X->new(); $x1->blah; printf "Copying in X2.pm\n"; system("cp X2.pm X.pm"); printf "Trying X.pm\n"; eval `cat X.pm`; $x1->blah; my $x2 = X->new(); #### [me@host tmp]$ cp X1.pm X.pm [me@host tmp]$ ./x.pl new() v1 blah v1 Copying in X2.pm Trying X.pm blah v2 new() v2