in reply to Interesting behavior in eval block

my $str = "use $module"; $str .= 'qw(' . $args . ')' if $args ne '1';
There's a space missing, which causes perl to try to load Time::HiResqw

I recommend a warn $@ if $@; after your eval.