3

このモジュールを使用し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

これで誰かが私を助けることができますか?

4

1 に答える 1

7

別のオプションは、次のように注文データで単語を取るTree::Trie'sを使用することです。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,food,fish
于 2012-12-06T02:32:03.387 に答える