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'来获取文件列表.