在Java中,我们可以使用
File.separator
来获取路径分隔符。
System.getProperty("path.separator");
在Perl中有类似的方法吗?我想做的就是找到一个目录,它是直接的子目录。
假设我有两个参数$a和$b;我将根据路径分隔符对第一个参数进行拆分,然后将其再次组合,除了最后一个片段,再与第二个参数进行比较。问题是我的代码必须是通用的,为此我需要知道系统相关的路径分隔符是什么?
您不应手动组合文件路径 - 相反地,应使用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 );
my $sep = File::Spec->catfile('', '');
这将两个空文件名与当前系统的分隔符连接起来,只保留分隔符。
在使用File::Spec之前,我使用的是这个方法。它至今仍然可用,并且在我所遇到的每个类Unix和Windows平台上都可以运行,即使是非常古老的Perl版本。
基本上,这个想法是询问Perl使用哪个字符作为目录分隔符:
$dirSep = ( $ENV{"PATH"} =~ m/;[a-z]:\\/i ) ? '\\' : '/' ;
print $dirSep;
use Config; $Config{path_sep}
返回。请注意,以下为翻译内容,不包括任何解释。 - daxim