I don't think you need to worry. Sure, in current day programs, time() is a 32 bit integer. But it needn't be. Even if today it was implemented, not using a 64 bit integer but using a (double) float instead of an integer, you'd have a precision of 53 bits. Surely that would be enough.
in reply to 2038 bug
And I really don't see a reason why the epoch couldn't just stay the same, Jan 1 1970 00:00:00 GMT. In other words: I don't really expect code like yours to break, provided your Perl port will be upgraded by then — and, as Abigail wrote, your system can handle it. Honestly, I do expect that that will turn out to be the biggest problem: timestamps on file systems.