Я действительно должен это знать, но я работал в основном с 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, скажем, :foo:bar:fubar
?