Text::TagsでTagging
CPANでTagging関連のモジュールを探すと
あたりが見つかると思う。どれも基本は半角スペースで区切られたfolksonomy文字列をパースするモジュールです。Text::Folksonomiesはシンプルすぎて足りない部分があったりします。Data::Taxonomy::Tagsは「:」コロンで区切ってのカテゴリー付けなど、複雑なタグをパースできます。
Text::Tagsはシンプルでいい感じです。
基本的な使い方は
my @tags = Text::Tags::Parser->new->parse_tags(q{ foo bar "baz bap" jenny's 'beep beep' });
なんだけど、日本語はそのままではうまく通りません。utf8フラグが立っている事が必要です。
textのエンコードがUTF8前提だけど
my $text = qq/日本語 かぜぶろ blog perl/; my @tags; utf8::decode($text) unless utf8::is_utf8($text);#必要なら foreach my $tag (Text::Tags::Parser->new->parse_tags($text)){ utf8::encode($tag) if utf8::is_utf8($tag);#必要なら push(@tags.$tag); }
とするとうまくTagに分解できます。ちなみにparse_tags時にダブっているTagを自動で取り除いてくれます。
日本語のことを考えるのであれば、Tagの区切り文字としては半角スペースだけではなく全角スペースも必要じゃないかと思ったりもする。