Как получить разделитель каталога (пути к файлу) в Perl?
в случае Java мы можем получить разделитель пути, используя
System.getProperty("path.separator");
есть ли аналогичный способ в Perl? Все, что я хочу сделать, это найти dir, немедленный подкаталог.
Скажем, мне дают два аргумента $a
и $b
; Я разделяю первый на основе разделителя пути и присоединяю его снова, кроме последнего фрагмента, и сравниваю со вторым аргументом.
проблема в том, что мой код должен быть общим, и для этого мне нужно знать, что зависит от системы сепаратор путь?
3 ответов
принятый ответ решает вашу реальную проблему, но если вы действительно хотите получить разделитель (используя только модули Perl core):
my $sep = File::Spec->catfile('', '');
это соединяет два пустых имени файлов с разделителем текущей системы, оставляя только разделитель.
вы не должны формировать пути к файлам вручную-вместо этого используйте File:: Spec модуль:
($volume, $directories,$file) = File::Spec->splitpath( $path );
@dirs = File::Spec->splitdir( $directories );
$path = File::Spec->catdir( @directories );
$path = File::Spec->catfile( @directories, $filename );