Как я могу получить разделитель каталога (путь к файлу) в Perl?
В случае Java мы можем получить разделитель путей, используя
System.getProperty("path.separator");
Есть ли аналогичный способ в Perl? Все, что я хочу сделать, это найти директорию, расположенную под прямым названием.
Скажем, мне дают два аргумента $a
и $b
; Я разделяю первый на основе разделителя путей и соединяю его снова, кроме последнего фрагмента, и сравнивая со вторым аргументом.
Проблема заключается в том, что мой код должен быть общим, и для этого мне нужно знать, что такое системный разделитель путей?
Ответы
Ответ 1
Принятый ответ решает вашу реальную проблему, но если вы действительно хотите получить разделитель (используя только модули ядра perl):
my $sep = File::Spec->catfile('', '');
Это объединяет два пустых имени файла с текущим разделителем системы, оставляя только разделитель.
Ответ 2
Вы не должны создавать пути к файлам вручную - вместо этого используйте 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 );
Ответ 3
Вы можете использовать константу SLA в файле:: Util.