in reply to Interesting behavior in eval block

After any eval, you should check to see whether it failed or not. Right after yours, I slipped in this line:

die $@ if $@;

It's also useful when debugging to print out the string you're trying to eval in case it has an obvious error. Here's the string you're using:

use Time::HiResqw(gettimeofday tv_interval)

...so I stuck a space in this line:

$str .= ' qw(' . $args . ')' if $args ne '1'";

The error you get about "gettimeofday" and "strict subs" is because you've told Perl that the bareword "gettimeofday" is a function call rather than just some string. If Time::HiRes doesn't load, you'll still get another error:

Undefined subroutine &main::gettimeofday called at ...

If Time::HiRes does load, "gettimeofday" without the parentheses is fine because—I'm guessing a little here—it has a prototype.

Anyway, always check your evals.