木情報を持つデータを解析するPerlスクリプトを作成しました。
木の構造をプログラムが”知る”ことが出来たわけで、これでnodeを操作することが出来ます。
以下の動作は、木情報を解析する一連の流れで実施します。
削除したいnodeのリスト情報を作る
削除したnodeのリストを読み込み、Perlの連想配列に追加します。
解析してるnodeと、削除nodeのリストを照合する
照合して、削除対象であると判明したら、
読み込んだnode情報を標準出力への出力対象としません。
親nodeの情報を引き継ぐ
木情報を解析する際、親nodeの解析、子nodeの解析という順番に
node解析を実施するため、親nodeが削除対象と判定された際、判定結果を
子nodeに引き継ぐことで、子nodeも同時に削除対象と判定することが出来ます。
⬆の動作を実現するのが、以下のスクリプトです。
プログラム
上の動作を実現するPerlスクリプト( prune_tree.pl )を⬇に貼付けます。
あと、木情報( tree )、削除nodeリスト ( prune_list )も貼付けておきます。
下記の環境で動作してます。
Mac OS X 10.9
perl --version
This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-thread-multi-2level
$cat tree | perl prune_tree.pl > pruned_tree
で、ファイルpruned_treeに、木構造を抽出した情報が出力されます。
treeは、木構造をもつデータファイル
pruned_listは、削除対象のnodeを記載したファイル