Системная команда Perl не действует как обычное приглашение - PullRequest
2 голосов
/ 11 августа 2010

Я пытаюсь изменить скрипт perl, чтобы закомментировать все строки, соответствующие некоторому шаблону. В обычной командной строке я пытаюсь добавить строку:

grep -lIRZ --exclude="*\.svn*" "pattern" . | xargs -0 -l sed -i -e 's/.*pattern.*/\/\/&/g'

Вот в контексте сценария Perl:

my $rmcmd = "grep -lIRZ --exclude=\"*\\.svn*\" \"pattern\" . | xargs -0 -l sed -i -e 's/.*pattern.*/\\/\\/&/g'";
runcmd($rmcmd);
...
sub runcmd {
    my @cmd = @_;
    print "Running: @cmd\n";
    system(@cmd);
    # Get  status from system
    my $ret = $? >> 8; 

    if ($ret) {  
        print "-E- command completed with error code $ret.\n"; 
        exit(1); 
    }
    return ($ret);
}

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

Что делается по-другому и как я могу это исправить?

1 Ответ

0 голосов
/ 11 августа 2010

Ваш код работает для меня - с Perl 5.10.1 в Ubuntu - после того, как я вставил пропущенную точку с запятой в конце строки $ rmcmd = ..

...