use strict; package Without; use File::Path (); use File::Spec (); use File::Temp (); use Symbol (); my $tempdir; BEGIN { $tempdir = File::Temp::tempdir(DIR => 't', CLEANUP => 1); } use lib $tempdir; sub import { my ($self, @modules) = @_; foreach my $module (@modules) { my @parts = split /::/, $module; my $pm_file = pop(@parts) . '.pm'; my $pm_path = File::Spec->catdir(@parts); my $path = @parts ? File::Spec->catdir($tempdir, $pm_path) : $tempdir; File::Path::mkpath($path, 0, 0755) unless -d $path; my $file = File::Spec->catfile($path, $pm_file); return if -e $file; my $new_pm_fh = Symbol::gensym; open $new_pm_fh, ">$file" or die "couldn't open $file for output: $!"; print $new_pm_fh "die;\n" or die "couldn't write to $file: $!"; close $new_pm_fh or die "error closing $file: $!"; my $pm_relname = File::Spec->abs2rel( File::Spec->catfile($pm_path, $pm_file) ); delete $INC{$pm_relname}; } } 1;