前回、GraphVizを使ったグラフの生成方法について書きました。 今回はdot言語ではなく、Perlでプログラムを記述してグラフを生成します。 ディレクトリの内容物を再帰的に取得してグラフ化したり、CGIプログラムに応用するなど、使い方は様々だと思います。
下準備
PerlでGraphVizを利用するには、GraphViz
モジュールを導入する必要があります。CPAN
からインストールすることで導入が可能です。
プログラム例
前回作成したグラフと全く同じグラフを生成するプログラムを例として掲載します。 add_node
メソッドはノードの生成、add_edge
メソッドは辺の設定を、as_png
メソッドは、PNG形式でグラフの生成します。 詳しくはCPANのマニュアルを参照してください。
#!/usr/bin/perl
use strict;
use warnings;
use GraphViz;
my $g = GraphViz -> new(directed => 0);
$g -> add_node('public_html', shape => 'folder');
$g -> add_node('cgi-bin', shape => 'folder');
$g -> add_node('css', shape => 'folder');
$g -> add_node('js', shape => 'folder');
$g -> add_node('index.html', shape => 'note');
$g -> add_node('design.css', shape => 'note');
$g -> add_node('script.js', shape => 'note');
$g -> add_node('calc.cgi', shape => 'note');
$g -> add_edge('public_html', 'cgi-bin');
$g -> add_edge('public_html', 'css');
$g -> add_edge('public_html', 'js');
$g -> add_edge('public_html', 'index.html');
$g -> add_edge('cgi-bin', 'calc.cgi');
$g -> add_edge('css', 'design.css');
$g -> add_edge('js', 'script.js');
print $g -> as_png();
プログラム名をgraph.pl
とし、出力する画像ファイル名はgraph.png
とします。 as_png
メソッドに引数を与えない場合は以下のように、リダイレクトで出力します。
$ ./graph.pl > graph.png
$
今回の例では、あまりPerlで実装する必要性が感じられないかもしれませんが、動的にグラフを生成したい場合に、Perlのプログラムに組み込むことで、柔軟に対応できると思います。 そんな感じで、今回はここまで。