Черт, если вы знаете формат даты, вам даже не нужно использовать модуль Perl для манипуляции с датой и временем:
my %months = (Jan => 1, Feb => 2, Mar => 3, Apr => 4 ...);
my $st r= "Thu Mar 25 01:48:45 IST 2011";
$st =~! /\S+\s+(\S+)\s+(\S+)\s+\S+\s+\S+(\S+)/;
my $date = sprintf "%s-%02s-%02s", $3, $months{$1}, $2;
Хорошо, это очень подвержено ошибкам, иВы, вероятно, хотите сделать много ошибок.Регулярное выражение, которое я использовал, можно отформатировать немного сильнее (проверяя символы и цифры, а не просто «не пробел». И, возможно, вы хотите убедиться, что месяц также действителен.
На самом деле, вы 'Для этого лучше использовать модуль Date / Time. Я собирался порекомендовать Time :: Piece, но James_R_Ferguson опередил меня.