Похоже, вы пытаетесь найти имя файла (без расширения) по полному пути к файлу. Если это так, посмотрите на основной модуль File::Basename
:
my $str = "/somedir/ref/some-dir/foo.word";
my( $filename, $directory, $suffix ) = fileparse($str, qr/\.[^.]*/);
Метод fileparse()
принимает два аргумента: строку для анализа и суффикс файла для удаления. Если вы заранее не знаете, каким будет суффикс файла, вы можете указать регулярное выражение. В этом случае суффикс будет соответствовать периоду, за которым следует ноль или более непериодических символов.
Редактировать: И если вы не находите имен файлов и хотите, чтобы буквы были между последним /
и последним .
, попробуйте это:
my $str = "/somedir/ref/some-dir/foo.word";
my @elems1 = split '/', $str;
my @elems2 = split '\.', $elems1[-1];
my $foo = $elems2[-2];
TIMTOWTDI! : -)