topaz pr graph.tpzの様に、コマンドラインで指定されたファイル"graph.tpz"を印刷し、印刷終了後コマンドラインに戻るスクリプト"pr"を考えてみましょう。ただし、lprにはPostscriptプリンタが関連付けられているとします。
1: $graph->gropen($ARGV[0]); 2: open (F, '| tpv2ps | lpr'); 3: $graph->paintall(F); 4: close(F);
次に以下のように、複数ファイルを印刷できるよう改良してみましょう。
topaz pr graph1.tpz graph2.tpz graph3.tpz以下がそのスクリプトです。
1: $len = @ARGV;
2: for ($i = 0; $i < $len; $i++)
3: {
4: $graph->gropen($ARGV[$i]);
5: open (F, '| tpv2ps | lpr');
6: $graph->paintall(F);
7: close(F);
8: }
第1行目で引数の数をスカラー変数$lenに代入しています。Perlと同様、配列変数をスカラー変数に代入すると、配列の数をスカラー変数に渡すことを思い出しましょう。2行目以降では、forループで各ファイルに対して印刷処理を行っています。また、このスクリプトはforeach文を用いて、さらに洗練された形で記述できます。
1: foreach $i (@ARGV)
2: {
3: $graph->gropen($i);
4: open (F, '| tpv2ps | lpr');
5: $graph->paintall(F);
6: close(F);
7: }
このようにスクリプトを用いると、連続印刷のような複雑な処理でも、とてもスマートに実現できることがお分かりいただけたと思います。