我需要在Perl脚本中构build一个文件path。 我应该使用哪个path分隔符来允许脚本在Windows和Unix上工作?
请记住,Windows需要一个驱动器号。
你想要File :: Spec的catpath
:
catpath() 获取卷,目录和文件部分并返回整个路径。 在Unix下,$ volume被忽略,目录和文件都是 级联。 如果需要,插入“/”。 在其他操作系统,$卷 意义重大。 $ full_path = File :: Spec-> catpath($ volume,$ directory,$ file);
你想要File :: Spec 。 Unix , Win32和MacOS以及其他版本都有特定的版本。
如果您发现File :: Spec繁琐,那么请尝试Path :: Class 。 它使您可以使用目录和文件对象,而不必在字符串上调用冗长的File :: Spec类方法。
这听起来像你正在使用路径分隔符来表示目录/文件名称组件之间的字符。 但是,如果你的意思是另一个意思:
有些东西(特别是像MANPATH或PERL5LIB这样的环境变量)需要一个由路径分隔符分隔的文件或目录名称列表。 Perl的Config模块可移植地提供$ Config :: Config {'path_sep'}这样的字符。
问:我应该使用哪个路径分隔符来允许我的脚本在Windows和Unix上工作?
一个: /。
说明: Windows可以像Unix一样使用/作为路径分隔符。 (Mac OS使用:作为路径分隔符而不是/)。 File :: Spec模块也可以提供帮助。 使用File :: Spec :: Functions; CHDIR(updir()); #上去一个目录 $ file = catfile(curdir(),'temp','file.txt'); #在Unix和Win32上,'./temp/file.txt' #在Mac OS上,':temp:file.txt' #在VMS上,'[.temp] file.txt' 资源: http://www.xav.com/perl/lib/Pod/perlport.html