Многие люди уже дали вам регулярные выражения, которые работают для вашей проблемы.Однако, когда я сталкиваюсь с этими случаями, я часто заканчиваю тем, что отделяю имя файла от расширения, чтобы я мог поиграть с именем файла отдельно:
my( $name, $extension ) = $filename =~ /(.+)\.([^.]+)\z/;
$name =~ s/.../.../;
my $new_filename = join '.', $name, $extension;
Я часто хотел rsplit
для такого родачто бы я мог разбить его на ограниченное количество элементов, начиная справа:
my( $name, $extension ) = rsplit /\./, $filename, 2; # fake code
Когда вы делаете это таким образом, если вы решите удалить .
из части вашего имени файла, вы не 'чтобы защитить финал .
перед расширением, нужно играть с трюками с регулярным выражением.