Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 创建辅助哈希表以快速搜索值_Perl_Hashtable_Hashref - Fatal编程技术网

Perl 创建辅助哈希表以快速搜索值

Perl 创建辅助哈希表以快速搜索值,perl,hashtable,hashref,Perl,Hashtable,Hashref,我有以下格式的hashref: { introduction_to_systems => { writer => "John", owner => "Jim" }, management_recipies => { writer =&g

我有以下格式的hashref:

{  
   introduction_to_systems => {  
                                 writer => "John",  
                                 owner => "Jim"  
   },  
   management_recipies => {  
                                 writer => "Jane",  
                                 owner => "Jim"  
   },  
etc  
}  
我的问题是这个散列不是很方便。我也希望能够很容易地找到“吉姆”或“约翰”是作家所拥有的一切

基本上我需要这个哈希表的两个倒数。

在perl中,最有效的方法是什么?

因为每个所有者和编写者都可以拥有和编写许多东西,您必须将一系列书籍作为值进行哈希处理。你可以用很多方法来做。例如:

#!/usr/bin/env perl
use strict;
use warnings;

my $books = {
    introduction_to_systems => {
        writer => "John",
        owner  => "Jim"
    },
    management_recipies => {
        writer => "Jane",
        owner  => "Jim"
    },
};

my ( %owns, %wrote );
for my $book ( keys %$books ) {
    my $rec = $books->{$book};
    push @{ $owns{ $rec->{owner} } },   $book;
    push @{ $wrote{ $rec->{writer} } }, $book;
}

print "Jim owns @{$owns{Jim}}\n";
print "John wrote @{$wrote{John}}\n";

您能否指出预期的条目数以及如何填充哈希?我想这可能会影响最佳选项。@Andrzej A.Filip:3-4K条目。什么意思?如何填充散列?如何用4K条目填充空散列?顺便问一下,您是否考虑过使用“内存中”SQLite数据库?[对于4K条目可能有一定意义]