in reply to Re: Importing Time::HiRes::time at run-time (and failing)
in thread Importing Time::HiRes::time at run-time (and failing)
Aha! Thanks for the cogent explanation. Along with some advice from bart on the chatterbox, I came up with the following proof-of-concept solution.
#! /usr/local/bin/perl -l package P; sub new { my $class = shift; my $mod = shift; eval "use $mod ()"; my $self = {}; if ($@) { $self->{_time_func} = sub { time }; } else { $self->{_time_func} = sub { Time::HiRes::time() }; } return bless $self, 'P' } package main; my $p = P->new( shift || 'Time::HiRes' ); print $p->{_time_func}->(); sleep 2; print $p->{_time_func}->();
You can run this, and if T::HR is installed, you get fractional times. Pass it junk on the command line, and then T::HR is not loaded (which simulates what happens on an installation that lacks it, or fails to load) and integer seconds come out.
In the real world, the _time_func business will be hidden from the user, they just get back fractional seconds, or not.
• another intruder with the mooring in the heart of the Perl
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Importing Time::HiRes::time at run-time (and failing)
by salva (Canon) on Apr 20, 2006 at 15:28 UTC |