my %month = ( jan => 1, feb => 2, ... ); m/webadmin_([^_]+)_(\d+)_(\d{4})\.log/; my ($month, $day, $year) = ($1, $2, $3); my $new_filename = sprintf "%04d-%02d-%02d", $year, $month{$month}, $day;