in reply to Variable behaving as a function call

Try
$time_zone_func = sub {gmtime()}; # then print $time_zone_func->(); # or print &$time_zone_func;

Though in this case a normal named function seems to be the easiest approach.

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!