File :: Util make_dir нежелательный вывод - PullRequest
1 голос
/ 04 декабря 2010

при использовании этого саба, если я передаю каталог с плохими символами, он выводит свой вывод на консоль следующим образом:

PROCESS TERMINATED DUE TO ERRORS

File::Util can't use this string for �the name of a directory�.
   �ddd??---?d�
It contains illegal characters.

Illegal characters are:
   \   (backslash)
   /   (forward slash)
   :   (colon)
   |   (pipe)
   *   (asterisk)
   ?   (question mark)
   "   (double quote)
   <   (less than)
   >   (greater than)
   \t  (tab)
   \ck (vertical tabulator)
   \r  (newline CR)
   \n  (newline LF)

Origin:     This is a human error.
Solution:   A human must remove the illegal characters from this string.

ARG   _pak = File::Util
ARG   purpose = the name of a directory
ARG   string = ddd??---?d

1. File::Util::_throw
    -called at line (1343) of blib/lib/File/Util.pm (autosplit into blib/lib/auto/File/Util/make_dir.al)
       -was called with args
       -was not called to evaluate anything


2. File::Util::make_dir
    -called at line (35) of importdatafiles.pl
       -was called with args
       -was not called to evaluate anything


3. (eval)
    -called at line (35) of importdatafiles.pl
       -was called without args
       -was not called to evaluate anything

Как подавить этот вывод (я просто хочу напечатать «Плохо» безвсе это подробная информация)

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

использовать Файл :: Путь qw / mkpath /?Я не знаю, работает ли он под Windows, но стоит попробовать.

0 голосов
/ 05 декабря 2010

«Просто подавить вывод», вероятно, можно сделать с помощью конструкции eval / die.Как это:

eval { make_dir (...) };
if ($@) { die "nice short error message" };

Однако, это длинное сообщение об ошибке все еще ошеломляет меня.Это было настолько оскорбительно, что я принял его за вывод утилиты командной строки Windows, как вы можете видеть:)

...