PNEテキストデータを使いやすく

昨日も書いたように、MEDLINEのデータをBioPerlのモジュールであるBio::Biblioとかで「$medline_obj->title();」な感じで処理するよろしく、PNEのテキストも手軽に扱えるとよいな、と思い立ち、パースしてオブジェクトにまとめるスクリプトを書いてみた。で、ファイルを指定するとタイトルとかキーワードとかを出すスクリプトも別途 作ってみた。後者については、

#!/usr/bin/perl

require "./extPneContents.pm"; # ← こいつがオブジェクトにまとめるやつ

my ($file_in, $tag) = @ARGV;

my $pnecont = extPneContents->new(-file => $file_in);
$rslt_ref = $pnecont->{$tag};

print $_."\n" foreach @$rslt_ref;

てな具合になっていて、

$ ./extPnetest.pl data/2004_49_2131.txt keyword
転写因子
シグナル伝達
クロストーク
蛋白質分解
26Sプロテアソーム

という感じに出る。
誰かが使うときのために、マニュアル的に書いておくが、本文の部分は工夫してあって、タイトルと地の文に分けられるわけだが、ともに配列に入れたので、各々2番目のがほしかったら、呼んだときの配列で(0から始まって)1番目のを指定すればよくしてある。ようするにベタに書くと、

...
my $pnecont = extPneContents->new(-file => $file_in);

$section_ref = $pnecont->{"section"};
@section = $@section_ref;

$body_ref = $pnecont->{"body"};
@body = $@body_ref;

for ($i=0; $i<=$#body; $i++) {
print $section[$i]."\n";
print $body[$i]."\n";
}

とやると、タイトルと本文と順繰りに出てくる(はず。試してない)
図のキャプションは場所は関係なかろうと思って、また別口に配列に突っ込んである。