因此,我试图根据 foreach 中的正则表达式对数组进行哈希处理。
我得到了一些文件路径,它们的格式是:
longfilepath/name.action.gz
所以基本上会有同名但动作不同的文件,所以我想用作为动作数组的名称键进行哈希。我显然做错了什么,因为我在运行代码时不断收到此错误:
Not an ARRAY reference at ....the file I'm writing in
我没有得到,因为我正在检查它是否设置,如果没有将它声明为数组。我仍然习惯 perl,所以我猜我的问题很简单。
我还应该说,我已经验证了我的正则表达式正确地生成了“名称”和“动作”字符串,所以问题肯定出在我的 foreach 中;
谢谢你的帮助。:)
我的代码就是这样。
my %my_hash;
my $file_paths = glom("/this/is/mypath/*.*\.gz");
foreach my $path (@$bdr_paths){
$path =~ m"\/([^\/\.]+)\.([^\.]+)\.gz";
print STDERR "=>".Dumper($1)."\n\r";
print STDERR "=>".Dumper($2)."\n\r";
#add the entity type to a hash with the recipe as the key
if($my_hash{$1})
{
push($my_hash{$1}, $2);
}
else
{
$my_hash{$1} = ($2);
}
}