Perl系统命令不能作为普通提示

时间:2010-08-10 20:28:33

标签: linux perl scripting grep

我正在尝试修改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 :(得分:0)

你的代码适用于我 - 在Ubuntu上使用perl 5.10.1 - 在$ rmcmd = ..行的末尾重新插入缺少的分号后。