Perl 的“not”运算符未按预期与 Defined() 函数配合使用

2023-12-22

以下代码片段未按预期工作:

$k{"foo"}=1;
$k{"bar"}=2; 
if(not defined($k{"foo"}) && not defined($k{"bar"})){
    print "Not defined\n";
}
else{
    print "Defined"
}

由于 $k{"foo"} 和 $k{"bar"} 均已定义,因此预期输出为“Defined”。但是,运行代码会返回“未定义”。

现在,在玩弄代码时,我意识到将括号括在每个not defined()调用会产生所需的结果:

if((not defined($k{"foo"})) && (not defined($k{"bar"}))){print "Not Defined"}

我想这与运算符优先级有关,但有人可以解释到底发生了什么吗?


优先级问题。

not defined($k{"foo"}) && not defined($k{"bar"})

means

not ( defined($k{"foo"}) && not defined($k{"bar"}) )

这相当于

!defined($k{"foo"}) || defined($k{"bar"})

当你真正想要的时候

!defined($k{"foo"}) && !defined($k{"bar"})

解决方案:

  • !defined($k{"foo"}) && !defined($k{"bar"})
  • not defined($k{"foo"}) and not defined($k{"bar"})
  • (not defined($k{"foo"})) && (not defined($k{"bar"}))

PS - 该语言被命名为“Perl”,而不是“PERL”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl 的“not”运算符未按预期与 Defined() 函数配合使用 的相关文章

随机推荐

  • 如何将日期选择器日期更改为 NSDate 类型但秒数为零

    我有一个日期选择器 它返回一个 NSdate 值 我想要将秒数的日期值设置为 0 我有在 Objective c 中执行此操作的代码 如下所示 NSTimeInterval time floor date timeIntervalSince
  • VBA Excel - ACCESS 中的更新记录

    我遇到问题了 我想使用 EXCEL 中的 VBA 更新 Access 数据库表中的现有记录 My code sqlik UPDATE query which works in access Set ZAP QUERY2 baza Creat
  • 将文本插入现有/外部 Draftjs 文本字段

    我正在开发一个需要将文本插入到contenteditable true div a Draftjs准确地说 基于文本字段 现在我知道 Draft js 使用 React 并且应该以这种方式使用 但在这种情况下 该应用程序已经存在 并且这是与
  • Angular 2 中的多个模块

    我有一个 Angular 2 应用程序 RC7 它最初是作为单个组件 但很快就以各种不同 有时完全不相关 的方式在整个项目中使用 其结果是 单个NgModule引导所有组件似乎是一个糟糕的主意 并且有大量的膨胀 我正在努力寻找一种拥有多个模
  • Azure Cosmos DB 使用基于角色的访问控制读取数据

    我在 Azure 中有一个 CosmosDB 我想授予用户读取各种集合内的数据的权限 我尝试给他们 读者 角色 这让他们知道存在 CosmosDB 并且他们可以看到一些元数据 但他们无法访问其中的数据 我为他们分配了 Cosmos DB 帐
  • Bash:有任何命令可以替换文本文件中的字符串吗?

    我有一个包含许多文本文件的目录层次结构 我想在每次特定的文本字符串出现在其中一个文件中时搜索它 并将其替换为另一个字符串 例如 我可能想将每次出现的字符串 Coke 替换为 Pepsi 有谁知道如何做到这一点 我想知道是否有某种 Bash
  • Angular 2 路由器 - CanActivate Guard

    我正在实现 CanActivate 防护 以便在用户会话无效时将用户重定向到登录页面 关于会话是否有效的检查是通过服务完成的 因此我从警卫那里订阅服务调用以获取会话有效性状态 我已经调试了代码 一切似乎都正常工作 事实上 当会话无效时 应用
  • 使用另一个文件中的行范围替换单独文件中字符串中出现的每 2 个 n

    我有三个文件 0 txt e 0 1 txt具有以下相同内容 sun t car snif house group tree home cool t machine shoes shirt shop t car snif house gro
  • 在设备上安装 Windows Phone 应用程序的不同方法

    我开发了一个Windows Phone 8应用程序 我有一个开发者帐户和解锁的设备 现在我可以通过 Windows Phone 开发 sdk 在我的手机中部署 安装应用程序 现在我想在另一个设备上安装这个应用程序 我朋友的设备 他在不同的位
  • 如何在 Netbeans 中打开“项目”面板

    在 Netbeans 中 代码所在的左上角曾经有两个面板 一个称为 项目 您可以在其中单击项目名称以打开其中所有目录和文件的树 然后可以双击一个文件来编辑它 下面是导航面板 显示您正在查看的文件中包含的类名称 方法等 我不小心单击了项目面板
  • 无法在 Kotlin 中构建发布版本

    将我的 Android 项目转换为 Kotlin 后 我无法构建发布版本 该错误似乎与 Proguard 有关 我看到 155 个警告 例如 Warning com example app activity MainActivity 1 c
  • iOS 11 navigationItem.titleView 宽度未设置

    在 iOS11 上使用 navigationItem titleView 查看行为 其中 titleView 的宽度不是屏幕的完整宽度 我有一个设置为 titleView 的自定义视图 在 iOS11 之前 视图将填充导航栏区域 但 iOS
  • NSDateFormatter “月份”的 3 个字母而不是完整的单词

    NSDateFormatter formatter NSDateFormatter alloc init formatter setDateFormat dd MM YYYY HH mm formatter setTimeZone NSTi
  • 将某个 JSON 值映射到 Enum 值 C#

    我正在为 Stack Exchange API 创建类 这过滤器对象 https api stackexchange com docs types filter类型包含成员filter type这将是safe unsafe or inval
  • 如何在 capistrano 部署中管理捆绑的 gem?

    目前 我只是运行以下命令 在 部署 update code 部署 bundle 之后 namespace deploy do task bundle do run cd release path bundle install deploym
  • Git 忽略本地删除的文件夹

    我有一个 Ruby on Rails 应用程序 当它崩溃时vendor rails存在 但如果不存在则工作正常 我需要将此文件夹保留在我的本地副本中 以便我可以工作 但我不希望提交此删除操作 有人把它放在那里是有原因的 那么如何删除这个文件
  • 更复杂(现实生活中)的模型绑定?

    跟我一起想象一下下面的例子 Public ViewResult GiveMeFruit int personId string personName int personAge int fruitId Person person Perso
  • 十六进制数的正则表达式?

    如何创建检测文本中的十六进制数字的正则表达式 例如 0x0f4 0acdadecf822eeff32aca5830e438cb54aa722e3 和 8BADF00D 下面的怎么样 0 xX 0 9a fA F 匹配以 0 开头 后跟小写或
  • 无法对所有 bing API 结果进行分页

    我目前正在使用必应网络搜索 API v7 https learn microsoft com en us rest api cognitiveservices bing web api v7 reference查询 Bing 的搜索结果 根
  • Perl 的“not”运算符未按预期与 Defined() 函数配合使用

    以下代码片段未按预期工作 k foo 1 k bar 2 if not defined k foo not defined k bar print Not defined n else print Defined 由于 k foo 和 k