Perl可以将数组引用存储为散列键吗?

Sac*_*hin 3 perl

考虑以下:

use strict;
use Data::Dumper;
my $hash={['one','two']=>[1,2]};
print Dumper($hash);
=for comment
prints....
$VAR1 = {
          'ARRAY(0x35358)' => [
                               1,
                               2
                              ]
         };
=cut
Run Code Online (Sandbox Code Playgroud)

作为替代方案,哈希中的键可以被构造为"一个\ ttwo",然后我可以基于制表符分隔符(在程序的后半部分,同时重置数据)来分离键的元素.

关于如何将密钥存储为数组引用的任何建议?

Dav*_*man 6

不,普通(非tied)Perl哈希只能将字符串作为键.如果用作散列键,其他任何东西 - arrayrefs,对象等等都会被字符串化,这使得散列键不能用作你最初拥有的非字符串.

Hash :: MultiKey使用魔法tie来回避这个限制.

  • 您可以使用(字符串化)引用作为哈希键,但不能完成**可以*完成的所有内容. (2认同)