perl - Perl - 使用字符串代替哈希键
问题描述
在动态循环中,我想生成字符串,然后将它们分配为哈希键,然后将一些值绑定到它们中的每一个。我所做的是(不使用严格)
$number = 1; %clause = ();
for(condition)
{
if (condition)
{
$name = join '', 'hash', $number;
$clause{$$name} = [ @somearray ];
$number++;
}
}
我所期望的是有一个带有名为 hash1,hash2.. 等键的子句散列。现在它实际上可以工作,但是只有一次,只适用于最后一个值。例如,我编写此代码,它只输出分配给最后一个哈希键的最后一个数组。似乎 $name 被覆盖了
foreach $key (keys %clause)
{ print "@{$clause{$key}}"; }
你能告诉我怎么做吗,谢谢
解决方案
我建议您稍微重写该循环并使用字符串插值构建您的密钥。你不需要$name
循环之外的任何东西。
use strict;
my $number = 1;
for my $item (@items)
{
if ( i_care_about($item) )
{
$clause{"hash$number"} = [ @somearray ];
$number++;
}
}
由于您想要一个字符串作为键,只需构建一个字符串。
推荐阅读
- html - 如何使用 href 从 URL 中删除查询字符串
- reactjs - ReactJS 中的三元运算符混淆
- reactjs - 是否可以在 Ant Design 中禁用空表的标题?
- php - axios 接收 array_filter 结果作为对象而不是数组
- javascript - 如何让 Ionic 3 应用程序从 Ionic 1 应用程序使用的 window.localstorage 读取现有数据?
- react-native - 无法解析模块“react-redux”...模块“react-redux”在加速模块映射中不存在
- c++ - 如何正确格式化此打印功能?
- java - Json 没有被写入文件
- javascript - 在 JS 中获取用户定义的 CSS 值
- azure-active-directory - dataLocationCode 字段在多地理位置的图形 API 中不可用