Это точно , что, как я ожидаю, сохранит в данной замене. Вы говорите, заменить самую длинную строку слешей и символов слова ничем. Таким образом, он захватывает все символы до тех пор, пока первый символ, который вы не * указали, и удаляет их.
Он делает то, что вы просите. Я присоединяюсь к другим и говорю, что используйте File::Basename
для того, что вы пытаетесь сделать.
Но вот самый быстрый способ сделать то же самое:
my $fname = substr( $out_fname, rindex( $out_fname, '/' ) + 1 );
Здесь говорится, что найдите в строке last вхождение '/'
и дайте мне текст, начинающийся после этой позиции. Я не против регулярных выражений, но это простое выражение того, что вы действительно хотите сделать. Мне так долго приходилось делать подобные вещи, я написал подпункт last_after
:
sub last_after {
my ( $string, $delim ) = @_;
unless ( length( $string ) and my $ln = length( $delim )) {
return $string // '';
}
my $ri = rindex( $string, $delim );
return $ri == -1 ? $string : substr( $string, $ri + $ln );
}