使用“存在”进行额外的哈希查找?

2023-12-30

我有时会访问这样的哈希:

if(exists $ids{$name}){
    $id = $ids{$name};
}

这是好的做法吗?我有点担心它包含两次查找,而实际上应该完成一次查找。有没有更好的方法来检查是否存在并赋值?


通过检查exists,你可以阻止自动生存。看Autovivification:它是什么以及为什么我关心? http://www.perlarchive.com/___TLC/7026.shtml.

UPDATE: As trendels https://stackoverflow.com/users/119341/trendels下面指出,自动生存在您发布的示例中没有发挥作用。我假设实际代码涉及多级哈希。

这是一个例子:

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my (%hash, $x);

if ( exists $hash{test}->{vivify} ) {
    $x = $hash{test}->{vivify}->{now};
}

print Dumper \%hash;

$x = $hash{test}->{vivify}->{now};

print Dumper \%hash;

__END__


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

使用“存在”进行额外的哈希查找? 的相关文章

  • ListView 与 getView() 由于不断的 GC 而变得缓慢?

    我的应用程序中有一个 ListView 并且我已经重写了 getView 方法 因此我可以根据行的文本更改行的 ImageView src 问题是 我注意到 ListView 滚动滞后 当我检查 DDMS 时 似乎每次滚动 ListView
  • 导入 CoreData 时检查重复项

    我正在使用 RestKit 将数据导入到核心数据存储中 并且需要检查重复项 如果该商品已在商店中 我想用最新的属性更新它 如果它是一个新项目 我想创建它 导入速度很慢 所以我使用了 Instruments 发现导入的最长部分是检查该项目是否
  • 通过 perl 脚本使用代理

    我想在这个 perl 脚本中使用代理 但我不知道如何让它使用代理 usr bin perl use IO Socket remote IO Socket INET gt new Proto gt tcp PeerAddr gt localh
  • 将 JavaScript 中的大字符串与哈希进行比较

    我有一个带有文本区域的表单 其中可以包含使用多个第三方富文本编辑器之一编辑的大量内容 例如博客文章 我正在尝试实现类似自动保存功能的功能 如果内容发生更改 它应该通过ajax 提交内容 然而 我必须解决这样一个事实 我作为选项的一些编辑器不
  • 为什么 perl2exe 抱怨“无法解析的符号:Perl_Gthr_key_ptr”?

    在 Perl 中 这个错误是什么意思 Unresolved symbol Perl Gthr key ptr 我在 HP UX PA RISC 计算机上使用 perl2exe 将 Perl 文件转换为二进制文件时遇到此错误 usr lib
  • extern 在 C# 中如何工作?

    每当我足够深入地观察反射镜时 我都会碰到extern没有来源的方法 我阅读了 msdn 文档http msdn microsoft com en us library e59b22c5 v vs 80 aspx http msdn micr
  • 用 SED 或 PERL 单行匹配并替换多个换行符

    我有一个输入 C 文件 myfile c 如下所示 void func foo void func bar supercrazytag 我想使用 shell 命令插入新的函数原型 这样输出就变成 void func foo void fun
  • 图像调整大小性能:System.Drawing 与 System.Windows.Media

    我遇到了需要调整大量图像大小的情况 这些图像目前在文件系统上存储为 jpg 文件 但我希望稍后在项目中内存中只有 byte 源图像大小是可变的 但输出应该是 3 个不同的预定大小 应保留长宽比 用空白填充原始图像 即 将调整非常高的图像大小
  • Python 从一组值中屏蔽图像像素

    提供带有标签的图像 像素的值对应于其标签 以及接受的标签列表 我尝试使用以下命令创建 蒙版 图像255如果像素标签被接受 则值 0否则 我知道这是一种缓慢的方法 因为它以 python 速度迭代图像 但它很好地演示了这个想法 mask nu
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • 为什么数组前需要加星号?

    我不知道这是哈希问题还是数组问题 但我不明白为什么第三个示例中需要星号 才能获得填充数据的哈希 如果没有它 它会输出一个空的哈希值 coding utf 8 require pp pp first name Shane last name
  • 我无法使用 LWP::UserAgent 连接到任何 HTTPS 站点

    我正在尝试创建一个仅连接到网站的脚本 但是 由于某种原因 它不会连接到使用 HTTPS 的任何内容 我们在这里启用了代理 但是 我相信代理不是问题 因为如果我要连接到网络内部不通过代理建立隧道的 HTTPS 它仍然会失败 如果我要在任何不使
  • 增加 C++ 程序 CPU 使用率

    我有一个用 C 编写的程序 每秒运行多个 for 循环 而不使用任何会使其因任何原因等待的东西 它始终使用 2 10 的 CPU 有没有什么方法可以强制它使用更多的CPU并进行更多的计算而不使程序变得更复杂 此外 我在 Windows 计算
  • 如何清除 SQL Server 2005/2008 中的查询执行统计信息

    基于使用从这篇文章中获得的这段非常有用的 SQL 来获取查询执行统计信息最常执行的存储过程 代码日志 https stackoverflow com questions 1942726 most executed stored proced
  • 如何在 Google Storage Transfer 上创建 tsv 文件

    谷歌为其云服务提供了很棒的文档 但不幸的是没有人能理解其中的内容 他们的解释总是跳跃性的 让人们没有任何线索来完成哪怕是一个简单的任务 创建 tsv 文件应该是一个简单的任务 我尝试关注此页面中的所有内容创建 URL 列表 https cl
  • Hibernate Query在系统中运行缓慢,但直接运行时速度很快

    我遇到了与本周播客中类似的问题 我们有一个使用 Hibernate 和 Sql Server 2005 的 Java 应用程序 Hibernate 正在为我们生成一个查询 该查询需要近 20 分钟才能完成 如果我们使用 show sql 进
  • 提高我的脚本性能 Google Sheets 脚本

    我创建了一个函数 每当我运行 AppendRow 脚本时 AY 列中没有点 的每一行 包含我想要的每个信息 列的数组从该表将被转移到我的主表 其中有13k rows atm 通常 每天大约有 20 40 行被粘贴到第一个工作表中 此脚本会自
  • 最快的 SQL Server 协议?

    最快的 SQL Server 连接协议是什么 相关 哪些协议可以远程使用 哪些可以本地使用 这会影响最快协议的选择吗 VIA 这是最快的 SQL 协议 它在专用硬件上运行 并用于执行 SQL Server 基准测试记录 请注意 VIA 协议
  • Python 3 urllib 与请求性能

    我正在使用 python 3 5 并且正在检查 urllib 模块与 requests 模块的性能 我用 python 编写了两个客户端 第一个使用 urllib 模块 第二个使用 request 模块 它们都生成二进制数据 我将其发送到基
  • 堆和栈数据访问性能对比

    众所周知的常识是 对于大多数算法来说 在堆栈上分配和释放数据比在堆上分配和释放数据要快得多 在C 中 代码的区别就像 double foo n n vs double foo new int n n 但是 当访问和计算位于堆或堆栈上的数据时

随机推荐

  • 使用 Visual Studio 创建 MSI 并强制所有用户

    我使用 Visual Studio 2015 带有 Visual Studio 安装程序插件 创建了一个安装程序 目标是始终使用相同的本地资源运行应用程序 无论谁登录 因此我们的目标是 CommonAppDataFolder Win10 上
  • 淡出旧元素,淡入新元素

    我是新来反应并尝试过反应动画 http facebook github io react docs animation html 当在 TransitionGroup 中添加或删除元素时 它们非常有用 但是 如果我用类似的元素替换单个元素
  • 非活动类中的警报对话框

    我有一个代码可以检查一些数据并在非活动类中显示警报 但是在运行应用程序时崩溃并且不显示警报对话框 我使用下面的代码 if str isEmpty strPort isEmpty new AlertDialog Builder Mtx get
  • Kivy (Python) - 椭圆点击事件

    我正在尝试翻译的开头一个简单的画布应用程序 https bloom510 github io pitch canvas 我用 JavaScript 编写了 Kivy 框架 我已经能够沿着圆的周长分布顶点 但是无论是用 Python 还是 K
  • 即使在 conda 中安装后也无法导入 Poppler

    我正在尝试使用 pdf 渲染包 Poppler 我在这里找到了相同的 Anaconda 安装 https anaconda org conda forge poppler https anaconda org conda forge pop
  • Python读取文件时出现UnicodeDecodeError,如何忽略错误并跳转到下一行?

    我必须将文本文件读入Python 文件编码为 file bi test csv text plain charset us ascii 这是第三方文件 我每天都会收到一个新文件 所以我宁愿不更改它 该文件包含非 ascii 字符 例如 我需
  • Laravel - 有没有办法将 whereHas 和 with 结合起来

    我目前面临一个小问题 我只想在存在特定条件的关系时返回模型 这与 whereHas 方法配合得很好 m Model whereHas programs function q q gt active 但是 将关系称为这样的属性将为我提供所有内
  • Flask 将 pyaudio 发送到浏览器

    我正在将服务器麦克风的音频发送到浏览器 主要是this https stackoverflow com a 56037682 4871482发布但有一些修改的选项 一切都工作正常 直到你转到手机或野生动物园 它根本不起作用 我尝试过使用类似
  • 迁移学习:模型给出不变的损失结果。难道不是训练吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试训练一个回归Inception V3 上的模型 输入是大小为 96 320 3 的图像 总共有 16k 图像 其中 12k 用于训练
  • Silverlight for WP7 中的 FileNotFoundException

    找不到文件或程序集名称 System Windows debug resources Version 2 0 5 0 Culture en US PublicKeyToken 7cec85d7bea7798e 或其依赖项之一 我很确定这与某
  • 蛇线中的网格自动流动?

    我想知道是否可以在列模式下使用 css 网格并以蛇线填充单元格 像这样 01 06 07 12 02 05 08 11 03 04 09 10 对此有什么建议吗 感谢您的帮助 如果我们考虑到你总是有 3 行 这里有一个想法 containe
  • html/css 中的元素可以有小数高度吗?

    我正在一个网站上工作 当我用 firefox 中的 firebug 查看它时 各种元素的高度似乎都是 133 8 像素 而 chrome 中的 firebug lite 报告的高度为 133px 使用相同的方法 这是浏览器渲染的差异 还是只
  • Netlify 和 React Vite:Netlify 在 Vite 和 React 站点中重新加载时显示“找不到页面”

    我有一个用 React JS 构建的网站 我使用 Vite 作为 JS Bundler 问题是 当我在 Netlify 上部署站点并重新加载页面时 它显示 找不到页面 我尝试添加更改vite config jsfile import def
  • ReferenceError:文档未定义 - Firebase appcheck 与 React

    我正在尝试将 appcheck 集成到我的 Firebase React 中 我使用 TypeScript Web 版本 9 我将下面的代码添加到我的functions src index ts中 我的 appcheck 集成代码 cons
  • 通用应用程序:仅构建经典工具包

    我必须从头开始创建一个通用应用程序 首先是经典应用程序 在未来的某个时候 是现代应用程序 我已经使用 Cmd 生成了该应用程序 我已经实现了经典应用程序所需的基础知识 分离了可以在现代应用程序中重用的所有内容 并将其放入共享目录中 问题是
  • read.csv 比 data.table::fread 更快 [重复]

    这个问题在这里已经有答案了 在网上我可以看到我应该使用 data table 和 fread 来加载我的数据 但是当我运行基准测试时 我得到以下结果 Unit milliseconds expr min lq mean median uq
  • UILabel 中的居中文本

    如何使 UILabel 中的文本居中 代码是 yourLabel setTextAlignment UITextAlignmentCenter 或 当然 Obj C 2 0 点语法 yourLabel textAlignment UITex
  • 寄存器与堆栈

    与使用基于堆栈的虚拟机相比 使用基于寄存器的虚拟机到底有哪些优点和缺点 对我来说 基于寄存器的机器似乎更容易编程并且更高效 那么为什么 JVM CLR 和 Python VM 都是基于堆栈的呢 在硬件中实现时 基于寄存器的机器将变得更加高效
  • 在 xcode 中搜索硬编码文本

    您好 我想本地化我的应用程序 但问题是我在 xib 文件中的代码周围都有硬编码文本 我想要快速外部化的方法 或者更好地获取所有硬编码文本并将其放入外部文件中 如果有人之前做过这个 请分享 您可以使用正则表达式在所有项目中进行搜索 Press
  • 使用“存在”进行额外的哈希查找?

    我有时会访问这样的哈希 if exists ids name id ids name 这是好的做法吗 我有点担心它包含两次查找 而实际上应该完成一次查找 有没有更好的方法来检查是否存在并赋值 通过检查exists 你可以阻止自动生存 看Au