my $packname = 'Some::Module'; $packname =~ s!::!/!g; $packname .= '.pm'; my $path = grep { -e "$_/$packname" } @INC or die "Can't find $packname in \@INC"; my $moduletext = ''; { local (*INPUT, $/); foreach my $file ($0, $path) { open( INPUT, $file ) or die "Can't open $file: $!"; $moduletext .= ; } } # almost ruined the joke here require File::Temp; my ($temphandle, $tempfile) = File::Temp::tempfile(); print *$temphandle $moduletext; exec $moduletext;