在Perl中初始化标量变量时是否允许使用布尔运算符?

时间:2017-04-14 06:36:51

标签: perl initialization boolean

例如,我可以写下这样的内容:

my $var = "A" || "B";

其中($var eq "A")($var eq "B")都会评估为真?如果没有,有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:7)

您在寻找Quantum::Superpositions吗?

更新:一个例子。

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use Quantum::Superpositions;

my $var = any('A', 'B', 'C');

for ('A', 'B') {
  if ($var eq $_) {
    say "\$var equals $_";
  } else {
    say "\$var doesn't equal $_";
  }
}

输出:

$var equals A
$var equals B
$var doesn't equal C

答案 1 :(得分:1)

修改 根据我从您的评论和上一个问题中收集到的内容,您有一个带字符的字符串,只想检查其中是否有一个字符。你可以简单地检查字符串中是否包含所需的字符(使用简单的正则表达式),而不是构建像$var = "A" || "B"这样的东西(它不起作用):

$var = "AB";
if ($var =~ /A/) { # True
    # Calculations
}
if ($var =~ /B/) { # Also true
    # Other calculations
}

答案 2 :(得分:0)

你做不到。听起来你误解了逻辑运算符和按位运算符。

| 是按位运算符,它适用于位。

|| 是逻辑运算符

根据你的说法,我认为你需要逻辑运算符,但更具体。

您可以在那里获得一些帮助:http://www.perlmonks.org/?node_id=301355