问题标签 [hashref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1489 浏览

perl - 如何摆脱 IE::Mechanize 中的“无法通过包“sssself”错误定位对象方法“警告”?

我正在玩 Win32::IE::Mechanize。我正在尝试一个脚本来自动访问我的六个基于 Web 的电子邮件帐户。该脚本基本上可以工作,但 perl 会抛出一种神秘的“无法通过包“sssself”定位对象方法“警告”(也许你忘记加载“sssself”)错误。尽管出现错误,脚本仍然可以完成工作.但我想摆脱它并了解它为什么会发生。以下是脚本。请在我可以改进代码的地方发表评论。一如既往地感谢。

我知道线路有问题

但是我该如何纠正呢?还是我应该删除

假装没事?

欢迎任何意见:)

更新

谢谢@daotoad 清理我的丑陋代码 :) 我认为嵌套结构更易于维护且美观。

并感谢@Eric,为我指出了相关模块的更好版本:)

好吧,事情是当 Win32::IE:Mechanize 0.009 给出以下神秘的错误消息时

无法在 C:/Perl/site/lib/Win32/IE/Mechanize.pm 第 971 行通过包“sssself”找到对象方法“warn”(也许您忘记加载“sssself”?)。

0.009_17 Dev Release 给了我一些非常有意义的信息:

在 E:\mailme.pl 第 33 行没有名为“用户名”的输入控件

考虑到这个错误信息,我检查了登录页面的源文件,结果发现字段 id 应该是“用户名”,而不是“用户名”。

所以我解决了我的问题:) 谢谢你们!

0 投票
4 回答
6009 浏览

perl - 如何从哈希元素的引用中获取密钥

假设$my_ref = \$hash{'mary'}; #my_ref是哈希元素的参考点。
....
稍后,我如何使用它$my_ref来检索它指向的哈希元素的键?即如何从中获取字符串“mary” $my_ref

我问这个问题是因为我有几组用户名列表,一些用户名出现在多个组中,这会消耗内存。所以我决定创建一个普通的用户名列表,让这些组只存储对应用户名的引用而不是用户名。

例如最初,

在这里,您会看到“mary”和“tom”都显示在两者中group1group2它们会消耗内存。(注意我不关心这个例子中的值,值在这里只是因为数据结构是一个哈希)。所以为了减少内存,我希望有一个通用列表存储所有用户名:

组只存储哈希元素的引用:

我认为这种方法可以节省大量内存,因为:

  1. 一个用户名在内存中存储一​​次而不是多次;
  2. 组存储引用(整数)而不是字符串(在我的情况下,每个用户名的长度平均为 30 个字节,而每个整数只有 4 个字节(32 位系统)或 8 个字节(64 位系统)) (顺便说一句,如果整数不使用 4 个字节或 8 个字节,请纠正我。)
  3. 使用参考我可以立即访问用户名而无需查找。

但是如何从组中获取用户名?

如果我使用@my_ref = keys %group1,我想我会得到 'mary' 的值,而不是 'mary'。

0 投票
2 回答
646 浏览

arrays - 如何从 hashref 内的数组中弹出?

大脑在这件事上变得模糊不清。我想将我的骰子游戏从使用 rand() 改为使用 random.org 中的随机值列表。我能够很好地检索值,我只是挂断了从列表中弹出的语法。

这是我适合的功能:

其中 $dice_stack 是指向散列的指针,其中键是骰子类型('6' 代表 d6,'20' 代表 d20),值是介于 1 和骰子类型之间的整数数组。

0 投票
4 回答
608 浏览

perl - Perl:创建散列的散列,最后一个键作为对数组的引用

http://codepad.org/8fJG5XaB

需要一点帮助来创建 hashrefs 的 hashrefs,最后一个键作为对数组的引用。


想要什么:

您可以将其与键盘的输出进行比较。注意细微的差别;而不是 'd' 是具有 arrayref 的 hashref value, 'd' 是 arrayref 并且没有value.

0 投票
2 回答
212 浏览

memory-leaks - 将引用返回到子例程中声明的哈希会导致内存泄漏吗?

正在使用我的 %data; 下面还可以,或者我应该切换到我的 $data={}; ?

我很困惑,因为——

如果makeJson()被多次调用 - 和my %data; 在堆栈中分配,然后返回该地址-这不是内存泄漏还是可能不是“泄漏”,而是“问题”?因为在堆栈上会分配内存,它仍然被引用,因此不能被释放。

和其他方式:如果我有一个返回哈希引用的子程序,最好使用我的 %data; (更快,因为编译器预先分配?)或我的 $data={}; ?

0 投票
1 回答
205 浏览

perl - Perl:从函数返回 hashref 不起作用

当我遇到一些我不理解的奇怪行为时,我在玩弄一些没有任何用处的混淆代码。

这是我的代码。

并在缩进:

它应该做的是获取字符串foo,构建对它的引用,然后使用该名称 ( &foo) 调用函数。该函数应该返回一个 hashref,其中键和值都是foo字符串。之后,它打印返回的 hashref 的 key 的值foo,即foo.

到目前为止,一切都很好。没用,但还是很有趣。奇怪的是,当我删除1 &&sub 中的部分时,尽管有卷曲,它仍会返回一个列表,我不知道为什么会这样做。

如果我只是说它sub foo { { 'foo'=>'foo' } }返回参考。为什么在我的情况下没有?此外,为什么在我添加时会出现1 &&

0 投票
1 回答
103 浏览

perl - Perl hashref/属性混淆

忽略如果使用严格和警告可能不会发生这种情况的事实,我想知道为什么这两种情况不同。

输出是:

为什么当索引为零时,y[0]->{name} 赋值会影响 x[0]->{name},但在索引为 1 时不会影响?

谢谢,

肖恩。

0 投票
2 回答
251 浏览

perl - Perl:将哈希引用加上其他键/值作为一个哈希引用传递的正确方法是什么?

目的是仅修改传递给函数的 hashref 参数,而不是修改原始 hashref。

我认为上述方法可行,但不确定是否有更好的方法(除了在通过之前修改原始参考)。

0 投票
2 回答
5863 浏览

perl - Perl:如何将键/值对推送到 hashref 并仍然保留引用

最后$a应该如下所示:

  • /li>

最后$b应该如下所示:

  • /li>

注意:这与执行以下操作相同:


$b = { %$b, d=>1, e=>1 };不需要,因为它会创建副本$a并丢失引用。

0 投票
3 回答
502 浏览

perl - 在 Perl 中一步声明并填充哈希表

目前,当我想建立一个查找表时,我使用:

有没有一种方法可以一步完成内联初始化?(即在我声明它的同时填充它?)