Note, it also "doesn't work" to interpolate an object method call within a string like you're doing. In other words, "epoch $s->mtime()" (notice the function call interpolated within quotes) doesn't interpolate as a funciton call, it interpolates as "epoch File::stat=ARRAY(0x28fbe6c)->mtime()". In other words, $s is interpolated, but not dereferenced as a method call. It does work to say ParseDateString( "epoch " . $s->mtime() );
This means that on second thought, you don't have a Date::Manip bug there, but rather, a bug in your own script, relying on a function of string interpolation that isn't there. See the following example:
use strict;
use warnings;
use File::stat;
use Date::Manip;
my $st = stat( 'router.pl' ) or die "Bleah: $!\n";
my $secs = $st->mtime();
print "Your method of interpolation: $s->mtime()\n"; # See? Wrong.
print "Stat info = ",
scalar localtime( $secs ),
"\n"; # This is just a reality check.
print "Using the 'epoch' method: ",
ParseDateString( "epoch $secs" ),
"\n"; # This works correctly now.
print "DateCalc method = ",
DateCalc( "Jan 1, 1970 00:00:00 GMT", $secs ),
"\n"; # And this works correctly too.
Hope this helps. :)
|