Хеш-сет в Perl - PullRequest
       37

Хеш-сет в Perl

5 голосов
/ 26 июля 2011

Рассмотрим следующий код:

$inFilesToCopy{$filename} = $filename;

У меня есть хеш-таблица, в которой ключ и значение являются именем файла. Я хотел бы избежать использования дополнительной памяти и не сохранять имя файла дважды.

Есть ли заданный объект в Perl?

Ответы [ 2 ]

11 голосов
/ 27 июля 2011

Set :: Object работает так, как вы ожидаете:

use Set::Object qw(set);

my $files = set();
$files->insert($file);
my @files = $files->members();

Вы также можете сделать set math:

my $a = set();
$a->insert(...);

my $b = set();
$b->insert(...);

my $only_in_a = $a - $b;
copy_to_b($only_in_a->members);
7 голосов
/ 26 июля 2011

Вы можете подумать:

$inFilesToCopy{$_} = 1;

и тогда вы можете делать такие тесты:

if($inFilesToCopy{$filename}) { ... }

вы также можете использовать 'keys% inFilesToCopy', чтобы получить список файлов.

...