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: }このようにスクリプトを用いると、連続印刷のような複雑な処理でも、とてもスマートに実現できることがお分かりいただけたと思います。