Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Once our framework loads the module all code that calls time() is fooled. Well almost, and that's the problem. Some of our code seems to not be fooled and I'm not sure why. I expected that somehow a time function was being imported into the current package, but that doesn't seem to be true as shown by the following debugger snippet:BEGIN { no warnings qw(redefine); *CORE::GLOBAL::time =\&MYPACKAGE::time; }
Why does "x time()" have such a different value than "x $time"?DB<2> c 500 Queue::MySQLQ::dequeue(/Users/foo/lib/Queue/MySQLQ.pm:500): 500: my $time = time(); DB<3> n + + Queue::MySQLQ::dequeue(/Users/foo/lib/Queue/MySQLQ.pm:501): 501: my $expire_time = $time + $WORKER_HEAR +TBEAT_FAILURE; DB<3> x $time + + 0 1238102461 DB<4> x time() + + 0 1238102486 DB<5> x __PACKAGE__ + + 0 'Queue::MySQLQ' DB<6> S Queue::MySQLQ + + Queue::MySQLQ::BEGIN Queue::MySQLQ::dequeue Queue::MySQLQ::enqueue Queue::MySQLQ::install Queue::MySQLQ::new Queue::MySQLQ::reap_queue Queue::MySQLQ::subscribe Queue::MySQLQ::subscribe_all Queue::MySQLQ::subscribe_all_generators
The Queue::MySQLQ code uses the POSIX module. Could that be stomping on my CORE::GLOBAL::time assignment for the scope of the file? I'm at a loss here. Any pointers for debugging this further would be appreciated!
|
|---|