sub gmtime { my $time = shift; $time = time if (!defined $time); _mktime($time, 0); } sub _mktime { my ($time, $islocal) = @_; if (ref($time)) { $time->[c_epoch] = undef; return wantarray ? @$time : bless [@$time, $islocal], 'Time::Piece'; } my @time = $islocal ? CORE::localtime($time) : CORE::gmtime($time); wantarray ? @time : bless [@time, $time, $islocal], 'Time::Piece'; }