在动态循环中,我想生成字符串,然后将它们分配为哈希键,然后将一些值绑定到每个字符串。我所做的是(不使用严格)
$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++;
}
}
由于您想要一个字符串作为键,只需构建一个字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句