gpt4 book ai didi

perl - Perl 中针对多个模式的字符串匹配

转载 作者:行者123 更新时间:2023-12-03 23:34:22 25 4
gpt4 key购买 nike

我有一个字符串,当我用变量检查它时,它没有给我预期的结果。通过使用模式匹配机制,它工作正常。

这是 Perl 中的预期行为。如果不是,如何在不使用模式匹配的情况下解决这个问题。

代码如下:

#!/usr/bin/perl

use strict;
use warnings;

my $day_of_week = "Monday";

if (($day_of_week ne "Monday") or ($day_of_week ne "Tuesday")){
print "In If. Today is $day_of_week.\n";
} else {
print "In else part\n";
}

这应该给出如下输出:

In else part

但它给了我:

In If. Today is Monday.

当我使用如下模式匹配更改 if 条件时,它工作正常。

if ($day_of_week !~ /Monday|Tuesday) {

我担心的是为什么字符串匹配不符合条件。我在这里做错了什么吗。

最佳答案

是复杂的复合条件让你受益——

$day_of_week ne "Monday"  # FALSE but 
$day_of_week ne "Tuesday" # TRUE

所以你正在测试

if (FALSE or TRUE)  #--> true

这就是为什么建议尝试始终“理顺”这些条件的原因。

所以要测试它既不是星期一也不是星期二

if ( $day_of_week ne "Monday" and $day_of_week ne "Tuesday" )

这更难混淆。


您可能需要将逻辑编码为

if (not ($day_of_week eq "Monday" or $day_of_week eq "Tuesday") )

形成一个大的复合条件然后被否定通常比替代方案更清楚,但在我看来不是这种情况。

关于perl - Perl 中针对多个模式的字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62600605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com