我确实应该知道这个,但我主要使用的是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 会理解你的意思。如果你正在构建要由主机计算机命令 shell 或该系统上其他程序解析的命令,则需要遵守该平台的规则,而 File::Spec 可以提供帮助。 - Eric Strom