Perl і Multimap - perl

Чи є спосіб реалізувати багатосмуговий C + + в perl?

Відповіді:

7 для відповіді № 1

Використовуйте a хеш масивів.

my %students = ( # keys are IDs, values are enrollments
100023 => [qw(Geography Mining)],
100058 => [qw(Geography Geology Woodcraft)],
);

3 для відповіді № 2

Якщо за допомогою multimap ви маєте на увазі C ++ multimap, відповідь так. У Perl карта відповідає хешу. Значення, пов'язане з даним ключем у хеші, може бути посиланням на хэш. Perl також не вимагає використання -> після першої операції індексування, тому замість того щоб говорити $h{key1}->{key2} Ви можете просто сказати $h{key1}{key2} що дає вам переконливу ілюзію багатовимірного хеша.

Ось приклад:

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my %h;

my $i;
for my $k (qw/one two three/) {
for my $j (qw/a b c/) {
$h{$k}{$j} = $i++;
}
}

print "one b should be 1: $h{one}{b}n",
Dumper %h;