Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl中if语句的求值_Perl_If Statement - Fatal编程技术网

Perl中if语句的求值

Perl中if语句的求值,perl,if-statement,Perl,If Statement,有两个声明的变量,如果两者都存在,我想同时求值(为TRUE) &&不起作用。是否有其他运算符,或者是否必须创建2 if状态? 我希望它能够打印成功< /代码> .< /p> 如果在数组中有超过0个元素时考虑数组true,那么if语句看起来很好,应该按预期工作。 该计划: my @array = (1,2); my $scalar = 1; if (@array && $scalar) { print "TRUE!\n"; } 打印TRUE 为什么你认为&>代码>不起作

有两个声明的变量,如果两者都存在,我想同时求值(为TRUE)

&&
不起作用。是否有其他运算符,或者是否必须创建2 if状态?

我希望它能够打印<代码>成功< /代码> .< /p> 如果在数组中有超过0个元素时考虑数组true,那么if语句看起来很好,应该按预期工作。

该计划:

my @array = (1,2);
my $scalar = 1;

if (@array && $scalar) {
    print "TRUE!\n";
}
打印
TRUE


为什么你认为<代码>&>代码>不起作用?

如果在数组中有超过0个元素时考虑数组true,那么你的if语句看起来很好,应该按照预期工作。

该计划:

my @array = (1,2);
my $scalar = 1;

if (@array && $scalar) {
    print "TRUE!\n";
}
打印
TRUE


你为什么认为
&&
不起作用?

不起作用的代码不是你发布的代码

perl -E 'my @array = (1,2); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
True!

perl -E 'my @array = (); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
False
编辑:更多关于kmxillo评论的示例:

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && $scalar) { say "True!" } else { say "False" }'
False

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && defined $scalar) { say "True!" } else { say "False" }'
True!

数字0被视为假值(连同
未定义
、空字符串、空数组和字符串“0”),因此将
$scalar
设置为0会使
@array&&$scalar
为假。若要在
$scalar
为0时保持为真,请改为测试
定义的$scalar

无效的代码不是您发布的代码

perl -E 'my @array = (1,2); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
True!

perl -E 'my @array = (); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
False
编辑:更多关于kmxillo评论的示例:

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && $scalar) { say "True!" } else { say "False" }'
False

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && defined $scalar) { say "True!" } else { say "False" }'
True!
数字0被视为假值(连同
未定义
、空字符串、空数组和字符串“0”),因此将
$scalar
设置为0会使
@array&&$scalar
为假。若要在
$scalar
为0时保持为真,请改为测试
定义的$scalar

尝试此操作

  my @array = (1,2);
  my $scalar = 0;

  if (scalar @array && defined $scalar){
     print "success\n";
  }
试试这个

  my @array = (1,2);
  my $scalar = 0;

  if (scalar @array && defined $scalar){
     print "success\n";
  }

两个变量都有超过零的元素,但它不起作用。。。正如您所说的,它应该可以正常工作。@kmxillo一个标量变量始终只有一个元素,即使它是
undef
定义的(
perl-E'say scalar@{[$a]}
),或者持有一个数组的引用(
perl-E'$a=\@a;say scalar@{[$a]}
)。这两个变量都有多个元素,但它不起作用。。。正如您所说,它应该可以正常工作。@kmxillo一个标量变量始终只有一个元素,即使它是
undef
定义的(
perl-E'say scalar@{[$a]}
),或者持有一个数组的引用(
perl-E'$a=\@a;say scalar@{[$a]}
)。数组本身总是正确的,你想检查它的长度吗?我想检查它是否有元素。对我有效:为了将来参考,“不起作用”是对你问题的糟糕描述。告诉我们您看到了什么意外行为。@Christoph如果数组不包含任何项,则数组为false(在布尔上下文中)<代码>perl-E'my@a;除非@a'数组本身总是真的,否则就说“false”,你想检查它的长度吗?也许吧?我想检查它是否有元素。对我有效:为了将来参考,“不起作用”是对你问题的糟糕描述。告诉我们您看到了什么意外行为。@Christoph如果数组不包含任何项,则数组为false(在布尔上下文中)<代码>perl-E'my@a;除非@a'I在计算if语句时将标量声明为0,否则请说“false”。它检查它是否是
>0
@kmxillo:啊!在这种情况下,您的问题在于Perl的“真”概念——数字0被认为是假的。如果希望它在
$scalar
为0时返回“true”,则在测试中使用
定义的$scalar
。我将编辑我的答案以显示这一点。在对if语句求值时,我将标量声明为0。它检查它是否是
>0
@kmxillo:啊!在这种情况下,您的问题在于Perl的“真”概念——数字0被认为是假的。如果希望它在
$scalar
为0时返回“true”,则在测试中使用
定义的$scalar
。我将编辑我的答案以显示这一点。不需要,因为的左侧始终处于标量上下文中。实际上,
&&
的右侧也是标量上下文的形式,因为。不需要,因为的左侧始终处于标量上下文中。实际上,
&&
的右侧也是标量上下文的形式,因为。