Попробуйте Module :: Load , если вы хотите загружать модули на лету.
Работает как с именами файлов, так и с модулями.Это безопаснее, чем
my $module = "strict; warn 'PWNED'";
eval "use $module";
Также, как указывает @daxim, это объясняет, что происходит.