17

在 Java 的情况下,我们可以使用获取路径分隔符

System.getProperty("path.separator");

Perl中有类似的方法吗?我要做的就是找到一个目录,即直接子目录。假设我得到了两个论点$a$b;我根据路径分隔符拆分第一个并再次加入它,除了最后一个片段并与第二个参数进行比较。

问题是我的代码必须是通用的,为此我需要知道系统相关的路径分隔符是什么?

4

3 回答 3

26

您不应该手动形成文件路径 - 而是使用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 );
于 2010-05-24T13:50:40.643 回答
9

接受的答案解决了您真正的问题,但如果您真的想获得分隔符(仅使用 perl 核心模块):

my $sep = File::Spec->catfile('', '');

这将两个空文件名与当前系统的分隔符连接起来,只留下分隔符。

于 2017-04-18T21:21:31.933 回答
8

您可以在 File::Util 中使用 SL 常量

于 2010-05-24T13:37:46.723 回答