Не удалось открыть файл perl

Я пытаюсь преобразовать файлы plist в XML-файлы в стиле JUnit. У меня есть таблица стилей xsl, которая преобразует plist в JUnit/ANT XML.

Вот код Perl, который я запускаю для преобразования plist в XML:

my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $stylesheet = $xslt->parse_stylesheet_file("\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/plist2junit.xsl");

my $counter = 1;
my @plistFiles = glob('Logs/*/*.plist');
foreach (@plistFiles){
    #Escape the file path and specify abosulte path
    my $plistFile = $_;
    $plistFile =~ s/([ ()])/\\$1/g;
    $path2plist = "\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/$plistFile";
    #transform the plist file to xml
    my $source = $parser->parse_file($path2plist);
    my $results = $stylesheet->transform($source);

    my $resultsFile = "\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/JUnit/results$counter.xml";
    #create the output file
    unless(open FILE, '>'.$resultsFile) {
    # Die with error message
    die "\nUnable to create $file\n";
    }

    # Write results to the file.
    $stylesheet->output_file($results, FILE);
    close FILE;
    $counter++;
}

После запуска perl-скрипта на Hudson/Jenkins он выводит следующее сообщение об ошибке:

Не удалось открыть ~/Hudson/build/workspace/ui-automation/automation\ test\ suite/Logs/Run\ 1/Automation\ Results.plist: нет такого файла или каталога

Ошибка вызвана my $source = $parser->parse_file($path2plist); в коде. Я не могу понять, почему он не может найти/прочитать файл.

Кто-нибудь знает, что может быть причиной ошибки?


person stackErr    schedule 29.10.2012    source источник
comment
Действительно? С таким именем файла, как ~/Hudson/build/workspace/ui-automation/automation\ test\ suite/Logs/Run\ 1/Automation\ Results.plist:, вы не можете понять, почему он не может найти файл?   -  person friedo    schedule 29.10.2012
comment
@фридо Что? он не может взять путь к файлу???   -  person stackErr    schedule 29.10.2012
comment
@friedo Я не уверен, что ты имеешь в виду под своим комментарием, можешь объяснить?   -  person stackErr    schedule 29.10.2012


Ответы (1)


В пути, упомянутом в сообщении об ошибке, есть три очевидные ошибки.

~/Hudson/build/workspace/ui-automation/automation\ test\ suite/Logs/Run\ 1/Automation\ Results.plist

Это:

  1. В текущем каталоге нет каталога с именем ~. Возможно, вы хотели использовать здесь значение $ENV{HOME}?
  2. На вашем диске нет каталога с именем automation\ test\ suite, но, вероятно, есть каталог с именем automation test suite.
  3. Точно так же на вашем диске нет каталога с именем Run\ 1, но, вероятно, есть каталог с именем Run 1.
person ikegami    schedule 29.10.2012
comment
Экранирование используется при вставке одного элемента в другой. У вас было два уровня экранирования, но только один уровень внедрения (строка в исходном коде Perl). - person ikegami; 29.10.2012