我试图编写一个实用程序,它将通过一个看起来像这样的文件:
# Directory | file name | action | # of days without modification to the file for the command to take action
/work/test/|a*|delete|1
/work/test/|b*|compress|0
/work/test/|c*|compress|1
我的脚本将通过文件决定是否,例如,/ work / test /下的文件是否以' a'开头。在过去的1天内没有被修改过,如果有的话,它会删除它们。
为此,我使用find命令。示例:
my $command = "find " . $values[0] . $values[1] . " -mtime +" . $values[3] . " -delete ;\n";
system ($command);
但是,我已经被要求检索每个步骤的返回码,以验证每个步骤是否正常。
现在,我知道system()返回返回代码,反引号返回输出。但是,我怎样才能得到两者?
答案 0 :(得分:12)
运行反引号后,返回代码可在{{3}}中找到。
MFMailComposeViewController
最后一个管道关闭,反引号(``)命令,成功调用wait()或waitpid()或来自system()运算符返回的状态。这只是传统Unix wait()系统调用返回的16位状态字(或者看起来像是这样)。
$?
答案 1 :(得分:2)
反引号,system()等的通用解决方案是使用${^CHILD_ERROR_NATIVE}
变量。查看perlvar perldoc:
http://perldoc.perl.org/perlvar.html#%24%7b%5eCHILD_ERROR_NATIVE%7d
$ {^ CHILD_ERROR_NATIVE} 最后一个管道关闭,反引号(``)命令,成功调用wait()或waitpid()或来自system()操作符返回的本机状态。在POSIX类系统上,可以使用POSIX模块提供的WIFEXITED,WEXITSTATUS,WIFSIGNALED,WTERMSIG,WIFSTOPPED,WSTOPSIG和WIFCONTINUED函数对此值进行解码。