use strict; use Benchmark qw(cmpthese); my $module1 = 'Z'; my $module2 = 'Z::X'; cmpthese( 0, { evalSTR1 => sub { eval "use $module1"; delete $INC{'Z.pm'} }, evalSTR2 => sub { eval "use $module2"; delete $INC{'Z/X.pm'}; }, req1 => sub { (my $pm = $module1) =~ s.::./.g; $pm .= '.pm'; eval { require $pm }; delete $INC{'Z.pm'} }, req2 => sub { (my $pm = $module2) =~ s.::./.g; $pm .= '.pm'; eval { require $pm }; delete $INC{'Z/X.pm'} }, } );