我正在使用该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);
Run Code Online (Sandbox Code Playgroud)
输出是
fish,foo,food
Run Code Online (Sandbox Code Playgroud)
期望的输出
foo,food,fish
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
另一种选择是使用Tree::Trie's add_data,它将使用订单数据,如下所示:
'foo' => 0,'great' => 1,'food' => 2,'banana' => 3,'apple' => 4,'fish' => 5
Run Code Online (Sandbox Code Playgroud)
并在a之后返回带有相关数据的单词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");
Run Code Online (Sandbox Code Playgroud)
输出:
foo,food,fish
Run Code Online (Sandbox Code Playgroud)