Hash设置在Perl中

Luk*_*don 6 perl hash set data-structures

请考虑以下代码:

$inFilesToCopy{$filename} = $filename;
Run Code Online (Sandbox Code Playgroud)

我有一个哈希表,其中键和值都是文件的名称.我想避免使用额外的内存而不是存储文件名两次.

Perl中有一个set对象吗?

jro*_*way 11

Set :: Object按预期工作:

use Set::Object qw(set);

my $files = set();
$files->insert($file);
my @files = $files->members();
Run Code Online (Sandbox Code Playgroud)

你也可以设置数学:

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

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

my $only_in_a = $a - $b;
copy_to_b($only_in_a->members);
Run Code Online (Sandbox Code Playgroud)


小智 7

你可能会考虑这样做:

$inFilesToCopy{$_} = 1;
Run Code Online (Sandbox Code Playgroud)

然后你可以做这样的测试:

if($inFilesToCopy{$filename}) { ... }
Run Code Online (Sandbox Code Playgroud)

你也可以使用'keys%inFilesToCopy'来获取文件列表.