You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl脚本判断字符串含*或!时无法进入IF循环问题排查

问题分析与修复

你的代码核心逻辑错误:使用eq运算符是判断字符串完全等于*或!,但你的需求是判断字符串包含这两个字符中的任意一个,所以永远触发不了if分支。

修复方案

方法1:使用index函数判断子串存在

if (index($dusers, "*") != -1 || index($dusers, "!") != -1) {
    print("........");
}

index函数会返回目标字符在字符串中的起始位置,若找不到则返回-1,只要返回值不等于-1就说明字符串包含该字符。

方法2:使用正则表达式(更简洁)

if ($dusers =~ /[*!]/) {
    print("........");
}

正则表达式[*!]表示匹配*或!任意一个字符,=~是Perl的正则匹配运算符,只要字符串中存在其中一个字符,匹配就会成功。

另外注意:原代码中print语句末尾缺少分号,虽然Perl在某些场景下允许省略,但建议补上以避免语法问题。

内容的提问来源于stack exchange,提问作者sachinrameshch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:20:53