例如,我可以写下这样的内容:
my $var = "A" || "B";
其中($var eq "A")
和($var eq "B")
都会评估为真?如果没有,有什么方法可以解决这个问题吗?
答案 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