【发布时间】:2011-12-12 21:57:07
【问题描述】:
我真的应该知道这一点,但我主要使用 Linux、Mac OS X 和 Windows,它们都使用正斜杠 (/) 作为目录分隔符(Windows 可以使用 \ 或 / .).
这意味着当我通常在 Perl 中编写程序时,我可以简单地使用/ 作为目录分隔符,一切都很好。但是,我知道 File::Spec 应该允许文件分隔符的可移植性(无论这意味着什么)。
如果我在不使用正斜杠作为目录分隔符的系统上,我理解用户希望能够使用默认分隔符输入文件并使用默认分隔符查看输出。 (例如,Windows 用户将输入并期望输出为 C:\Users\smith\Documents 而不是 C:/Users/smith/Documents),但是 Perl 在内部做了什么?
尽管平台可能使用什么作为目录分隔符,我是否可以在内部处理文件时简单地使用正斜杠。例如,我有一个目录$dir 和一个名为$file 的文件,我想打开该文件。我可以简单地说$dir/file,还是必须使用File::Spec 来连接我的名字?
事实上,Perl 程序要求目录名称中的正斜杠吗?我正在编写一个模块,并将文件名传递给调用程序。我应该将文件指定为/foo/bar/fubar,还是如果系统使用早期Macintosh OS 等冒号,例如:foo:bar:fubar?
【问题讨论】:
-
你打算用这些路径做什么?如果是用于读写文件,那么
/就可以了,perl 会按照你的意思去做。如果您正在制作由主机的命令外壳或该系统上的其他程序解析的命令,那么您将需要遵守该平台的规则,File::Spec 可以提供帮助。