Perl - 主脚本调用子脚本和返回状态

时间:2011-01-27 21:40:53

标签: perl system status

这是我想在Perl中完成的设计:

主脚本调用多个子脚本。主脚本控制特定序列中每个子脚本的调用,并记录每个子脚本的输出,以决定是否不调用下一个脚本。

目前,我有一个使用system()调用调用子脚本的主脚本,但是我遇到了子脚本将状态传回主脚本的问题。

不想使用子功能,真的希望将每个子脚本代码分开。

更多地了解这个问题: 子脚本应决定向主脚本报告的内容。例如:子脚本在子脚本在数据库中找到字符串值时发送代码1,当子字符串找不到要查找的文件时,它发送代码2,并在一切正常时发送代码0。 / p>

3 个答案:

答案 0 :(得分:4)

你不能只使用exit代码吗?

my $code = system( 'perl', '-e', 'exit 2;' ) >> 8; # $code = 2
say "\$code=$code";

退出代码可以为255 不同的值。

答案 1 :(得分:0)

您可以使用反引号语法执行和捕获系统命令的输出。

# get result as scalar
$result = `ls -lA`;

# get the result as an array, each line of output is a separate array entry
@result = `ls -lA`;

每当使用反引号语法时,命令的退出状态也会存储在自动变量$?

然后,您可以让主脚本使用您需要的任何逻辑来决定输出是否良好。

答案 2 :(得分:0)

看看Axeman的答案,您可以使用IPC::System::Simple模块:

#!/usr/bin/perl
use warnings;
use 5.012;
use IPC::System::Simple qw(system $EXITVAL EXIT_ANY);


system( [2], 'perl', '-e', 'exit 2' );
say "EXITVAL: $EXITVAL";