(*).
Если вы возитесь с дорожками, рекомендуется использовать Path::Tiny
. Он имеет почти все методы, которые вы могли хотеть для получения абсолютных/относительных путей, basenames, и многие другие, включая родителей ...
use Path::Tiny;
my $path = path('/usr/local/bin/mybinary');
say $path->parent; # OUTPUT: '/usr/local/bin'
Обновление: Старик совет
Я знаю, что ты сказал (в комментарии к ответу toolic
), что вы изучаете регулярное выражение и хотите использовать их вместо функции. Часть регулярных выражений обучения также изучает, где они не подходят, или переполняют проблему. В этом случае подстрока пути от index
0 до rindex
(правый индекс) '/' будет более эффективной.
my $string = '/usr/local/bin/mybinary';
say substr($string, 0, rindex($string, '/')); # OUTPUT: '/usr/local/bin'
# or get the child
say substr($string, rindex($string, '/') + 1); # OUTPUT: 'mybinary'
Много PERL начинающих использовать регулярные выражения захватывает или split
за проблемы, которые могут быть решены более эффективно использовать substr
, наряду с index
, rindex
и/или length
. Стоит изучить эти методы манипуляции строками, чтобы вы могли лучше решить, когда использовать регулярные выражения.
См. [Файл :: Базисное имя] (http://perldoc.perl.org/File/Basename.html) –
Обновите свой вопрос с помощью исполняемого кода, который вы используете. – toolic