如何在Perl中检查返回的值是否为1

如何在Perl中检查返回的值是否为1,perl,Perl,我在Windows中使用Perl,我已经用Perl编写了调用2个jar文件的代码,我想检查这2个jar文件返回的值是否为1。我如何用Perl实现这一点 编写用于在Perl中调用2个JAR(Sample1和Sample2)的代码 我想检查这两个jar文件中是否有任何一个,即Sample1.jar或Sample2.jar是否返回值1。我在这些jar文件中使用return语句返回值,但我无法在perl中获取这些值并检查返回的值是0还是1。有人能告诉我应该进行哪些修改以使其工作吗没错,我试过用 if($

我在Windows中使用Perl,我已经用Perl编写了调用2个jar文件的代码,我想检查这2个jar文件返回的值是否为1。我如何用Perl实现这一点 编写用于在Perl中调用2个JAR(Sample1和Sample2)的代码

我想检查这两个jar文件中是否有任何一个,即Sample1.jar或Sample2.jar是否返回值1。我在这些jar文件中使用return语句返回值,但我无法在perl中获取这些值并检查返回的值是0还是1。有人能告诉我应该进行哪些修改以使其工作吗没错,我试过用

if($res==1 || $res1==1)
{
$val =1;
print $val;
}
else
{
$val=0;
print $val;
}
但这不起作用,这给了我一个错误 参数“”在Sample1.pl第30行第4行的数字等式(=)中不是数字。
参数“”在Sample2.pl第34行第4行的数字等式(=)中不是数字。

为避免此警告,可以使用由程序包Scalar::Util提供的函数looks_like_number

use Scalar::Util qw(looks_like_number); 
if((looks_like_number($res) && $res==1) || (looks_like_number($res1) && $res1==1))
{
 ..

$res
显然包含一个空字符串,因此您实际上是在

"" == 1
这是一个数字比较,但空字符串不是数字。您可以使用字符串比较

$res eq "1"
或者您可以专门处理空字符串

length($res) && $res == 1

尝试以下操作以获取值:

$cmd = "java -jar C:/xampp/perl/bin/Sample1.jar";
$response = `$cmd`

if ($response eq 1){...}

还是要获取返回码?

此文档的片段:

    my @args = ("command", "arg1", "arg2");
    system(@args) == 0
        or die "system @args failed: $?";

    if ($? == -1) {
        print "failed to execute: $!\n";
    }
    elsif ($? & 127) {
        printf "child died with signal %d, %s coredump\n",
            ($? & 127),  ($? & 128) ? 'with' : 'without';
    }
    else {
        printf "child exited with value %d\n", $? >> 8;
    }


显示所有实际输出,以便查看值。请注意,
qx
(反勾号)也会返回换行符(如果调用程序的输出中有换行符)。因此,在它返回时使用
chomp
(删除我对chomp-ing的评论)如果可以的话——祝贺300k!!!(主要是在标签中,它的数量级比其他标签少!):@zdim,谢谢:)(关于咀嚼,这是一个公平的观点,但鉴于OP的帖子缺乏清晰性,我不想花费更多的精力)
    my @args = ("command", "arg1", "arg2");
    system(@args) == 0
        or die "system @args failed: $?";

    if ($? == -1) {
        print "failed to execute: $!\n";
    }
    elsif ($? & 127) {
        printf "child died with signal %d, %s coredump\n",
            ($? & 127),  ($? & 128) ? 'with' : 'without';
    }
    else {
        printf "child exited with value %d\n", $? >> 8;
    }