Эфир определенно находится на правильном пути с DateTime. Используя DateTime, вы можете быть уверены, что у вас есть время, которое действительно существует, и что-то могло бы произойти 29 февраля 2000 года, если бы вы сами написали чеки.
Ваш формат выглядит как строка ISO8601. Итак, используйте DateTime :: Format :: ISO8601 , чтобы выполнить анализ.
use DateTime;
use DateTime::Format::ISO8601;
my $string = '2010-02-28T15:21:33Z';
my $dt = DateTime::Format::ISO8601->parse_datetime( $string );
die "Impossible time" unless $dt;
Вы можете использовать другие модули форматирования, такие как D :: F :: Strptime , но в итоге вы воссоздадите то, что уже делает форматер ISO8601.