我正在使用
Tree::Trie
模块来构建关键字树.我想按原始数组中的顺序打印数组的元素.
use strict; use warnings; use Tree::Trie; my @ar = ('foo','great','food','banana','apple','fish'); my ($trie) = new Tree::Trie; $trie->add(@ar); my @ms = $trie->lookup('f'); print join(",",@ms);
输出是
fish,foo,food
期望的输出
foo,food,fish
有人可以帮助我吗?
解决方法
另一种选择是使用Tree :: Trie的add_data,它可以将您的单词带到订单数据,如下所示:
'foo' => 0,'great' => 1,'food' => 2,'banana' => 3,'apple' => 4,'fish' => 5
并在lookup_data之后返回带有相关数据的单词.然后,该数据可用于保留原始单词顺序:
use strict; use warnings; use Tree::Trie; my @ar = qw( foo great food banana apple fish ); my $trie = Tree::Trie->new(); $trie->add_data( map { $ar[$_] => $_ } 0..$#ar ); my %ms = $trie->lookup_data('f'); my @ms = sort { $ms{$a} <=> $ms{$b} } keys(%ms); print(join(',',@ms),"\n");
输出:
foo,fish