my $tstr = 'Sat, 20 Feb 2010 01:31:52 GMT'; my %months; @months{qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)} = 0..11; use Time::Local; my @parts = split(/\W+/, $tstr); print join(', ', @parts), "\n"; # Get internal time representation from formatted parts # sec, min, hour, day, mon, year my $newtime = timegm(@parts[6,5,4,1], $months{$parts[2]}, $parts[3]-1900); # Add an hour, in seconds $newtime += 60*60; # Reformat into new time string $tstr = gmtime($newtime); # Comma after day, and GMT tag $tstr =~ s/(?=\s)/,/; $tstr .= ' GMT'; print "New time is <$tstr>\n";