2008-04-05から1日間の記事一覧

16.4 別のプログラムと読み書きする

別のプログラムを実行し、そのプログラムの出力の読み取りや、そのプログラムへの入力の書き込みを行いたい。 プログラムから出力を読み取る場合 $pid = open $readme, "-|", "program", "arguments" or die; while(<$readme>) { # ... } close $readme; プ…

16.3 現在のプログラムを別のプログラムに置き換える

実行中のプログラムを別のプログラムに置き換えたい。その際、別のプログラムを実行する前にパラメータを検査し、初期環境を設定する。 組み込みのexec関数を使用する。execを呼び出すときにメタキャラクタが含まれている引数を1個だけ渡すと、シェルが使用…

16.2 別のプログラムを実行する

1つのプログラムから別のプログラムを実行し、それが終了した後で、元のプログラムの実行を継続したい。その際、別のプログラムでも元のプログラムと同じSTDIN, STDOUTを使用する。 引数として1個の文字列を渡してsystemを呼び出し、その文字列がシェルによ…

16.1 プログラムから出力を収集する

プログラムを実行したときに、その出力を収集して、変数に保存したい。 バッククォートを使用する $output = `program args`; # 1個の複数行文字列に出力を収集する @output = `program args`; # 各要素に1行ずつ割り当てた配列に出力を収集する パイプを使…

15.20 イメージにテキストを追加する

CPANのGDモジュールを使用する use GD; $image = GD::Image->new($FILENAME); $blue = $image->colorAllocate(0,0,255); $image->string(gdTinyFont, 10, 10, "Copyright Me, 2037", $blue); # $image->png()でファイルに書き込む

15.19 イメージの縮小版を作る

CPANのImage::Magickモジュールを使用する use Image::Matick; $image = Image::Magick->new(); $image->Read($ORIGINAL_FILENAME); $image->Resize(geometry => '120x90'); $image->Write($THUNBNAIL_FILENAME);

15.18 データをグラフ化する

数値データがあるので、それを棒グラフ、円グラフ、折れ線グラフなどで表したい。 CPANのGD::Graph::*モジュールを使用する use GD::Graph::lines; # bars, lines, points, pie $chart = GD::Graph::lines->new(480, 320); $chart->set( x_label => $X_AXIS_…

15.17 Windows Perl/TkでDOSシェルウィンドウを消去する

プログラムの最初の部分に、次のコードを追加する BEGIN { if ($^O eq 'MSWin32') { require Win32:Console; Win32::Console::Free(); } }

15.16 Tkのサイズ変更イベントに応答する

Confiureイベントを捕捉することによって、ユーザがウィンドウのサイズを変更するのを防ぐ use Tk; $main = MainWindow->new(); $main->bind('<Configure>' => Sub { $xe = $main->XEvent; $main->maxsize($xe->w, $xe->h); $main->minsize($xe->w, $xe->h); });</configure>

15.15 Tkでダイアログボックスを作成する

Tk::DialogBoxウィジェットを使用する use Tk::DialogBox; $dialog = $main->DialogBox ( -title => "Register This Program", -buttons => [ "Register" , "Cancel" ] ); # $dialog->Add()を使用して、ダイアログボックスにウィジェットを追加する # 後でダ…

15.14 Tkでメニューを表示する

TkのMenubuttonおよびFrameウィジェットを使用する。 use Tk; $main = MainWindow->new(); # メニューを表示するための水平方向の領域をウィンドウの最上部に作成する $menubar = $main ->Frame(-relief => "raised", -borderwidth => 2) ->pack(-anchor => …