http://www.perlmonks.org?node_id=349304


in reply to Re: Conditionally override 'time' builtin with Time::HiRes::time()
in thread Conditionally override 'time' builtin with Time::HiRes::time()

Ah, perfect!

Here's what I really want, though:

#!/usr/bin/perl -w use strict; BEGIN { Time::HiRes->import('time') if eval "require Time::HiRes"; } my $time = time; print "$time\n";
UPDATE (Fri Apr 30 11:15:23 PDT 2004):

Your advice is well-received, chip! Changed the eval EXPR to eval BLOCK. As for letting the user know, that is also a good idea. I left that out for brevity. This is actually for a patch to Net::IRC, so I'll let Jeremy (the maintainer) decide weather he wants to emit a warning.

#!/usr/bin/perl -w use strict; BEGIN { Time::HiRes->import('time') if eval { require Time::HiRes }; } my $time = time; print "$time\n";

---
"A Jedi uses the Force for knowledge and defense, never for attack."

Replies are listed 'Best First'.
Re: Re: Re: Conditionally override 'time' builtin with Time::HiRes::time()
by chip (Curate) on Apr 30, 2004 at 00:33 UTC
    That eval STRING could just as well be eval BLOCK.

    More to the point: Having your program work differently just because a module gets installed is usually evil. People don't expect that installing a module will make apparently unrelated code start doing different things. At least print a diagnostic or something, a la CPAN and Term::ReadLine.

        -- Chip Salzenberg, Free-Floating Agent of Chaos