Как получить разделитель каталога (пути к файлу) в 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 );

можно использовать константа SL в файле:: Util.