Как я могу создать независимые от операционной системы пути к файлам в Perl включая дополнительную букву диска Windows?

Одно обходное решение должно записать .ToList().ForEach(x => ...).

профессионалы

Легкий понять - читатель только должен знать что поставки с C#, не любые дополнительные дополнительные методы.

Синтаксический шум является очень умеренным (только добавляет немного постороннего кода).

обычно не стоит дополнительной памяти, так как собственный компонент .ForEach() должен был бы понять целый набор, так или иначе.

недостатки

Порядок операций не идеален. Я понял бы один элемент, затем действовал бы на него, затем повторяюсь. Этот код понимает все элементы сначала, затем действует на них каждый в последовательности.

При понимании списка выдает исключение, Вы никогда не добираетесь для действия на единственный элемент.

, Если перечисление бесконечно (как натуральные числа), Вы являетесь неудачливыми.

7
задан Ciro Santilli 新疆改造中心法轮功六四事件 30 January 2015 в 13:00
поделиться

5 ответов

Вы хотите File :: Spec catpath :

       catpath()
         Takes volume, directory and file portions and returns an entire path.
         Under Unix, $volume is ignored, and directory and file are
         concatenated.  A '/' is inserted if need be.  On other OSes, $volume
         is significant.

             $full_path = File::Spec->catpath( $volume, $directory, $file );
12
ответ дан 6 December 2019 в 08:43
поделиться

Вам нужен File :: Spec . Существуют специальные версии для Unix , Win32 и MacOS , а также других .

8
ответ дан 6 December 2019 в 08:43
поделиться

Если вы находите File :: Spec громоздким, как я, попробуйте Path :: Class . Он дает вам каталоги и файловые объекты для работы, вместо того, чтобы вызывать длинные заученные методы класса File :: Spec для строк.

5
ответ дан 6 December 2019 в 08:43
поделиться

Похоже, вы используете разделитель путей для обозначения символа между компонентами имени каталога / файла. Но на всякий случай вы имели в виду другое значение:

Некоторые вещи (особенно переменные среды, такие как MANPATH или PERL5LIB) принимают список имен файлов или каталогов, разделенных символом разделителя пути. Модуль Perl Config переносимо предоставляет такой символ, как $ Config :: Config {'path_sep'}.

2
ответ дан 6 December 2019 в 08:43
поделиться

Q:Which path separator should I use to allow my script to work on both Windows and Unix?

A: /.

Explanation:
Windows can work similarly to Unix with / as path separator.
(Mac OS uses : as a path separator instead of /).

The File::Spec modules can also help.

    use File::Spec::Functions;
    chdir(updir());        # go up one directory
    $file = catfile(curdir(), 'temp', 'file.txt');
    # on Unix and Win32, './temp/file.txt'
    # on Mac OS, ':temp:file.txt'
    # on VMS, '[.temp]file.txt'

Source: 
http://www.xav.com/perl/lib/Pod/perlport.html
-6
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: