Perlの星 ~第2話: コードの再利用~ 図書館職員のための アプリケーション開発講習会 コードの再利用 定型処理をサブルーチン(関数)にまとめる モジュール化する いずれも基本的な発想は同じです。 ここでは簡単なサブルーチンに まとめる方法について紹介します。 サブルーチンとは 定型処理をまとめたもの プログラム中で複数回呼び出す処理をまとめておくと便利! プログラム中で似たようなプログラムを書かなくて(コピー&ペーストしなく プログラム中で一回のみ呼び出す処理にも有効 て)もよくなる サブルーチンをバグ対策すると、関係箇所がすべて対策される → 管理が 楽になる プログラムが短くなる → 読むのが楽になる プログラムの構造を把握しやすくなる プログラムの構造を把握しやすくなる 同じインターフェイスをもつサブルーチンを切り替えて使える 複数のプログラムで使う場合にも便利(ライブラリやモジュール) 変換テーブルを参照するテキスト加工の 基本的な例(簡略誌名変換、ISBNによる重複チェックなど) # ステップ1 変換テーブル読み込み open (HENKAN, “HenkanTable.txt”) or die; while my $line1 (<HENKAN>) { @field_henkan = split(“\t, $line1”); $table{filed_henkan[1]} = $fiels_henkan[3]; } # ステップ2 データ変換 open (INPUT, “input.txt”) or die; while my $line2 (<INPUT>) { chomp $line2; @field_input = split(“\t, $line2”); print $line, “\t”, $talbe{$filed_input[2]}; } ハッシュ %table を 仲介にして変換 サブルーチンにまとめる $Result = &test{$Data1, $Data2); #サブルーチン name 呼び出し print $Result; # 結果を print # サブルーチン test sub test { my ($data1, $data2) = @_; # なんらかの処理 return $result; # return文で結果を返す } 同色の部分は同一のデータが入る。 赤字の部分はサブルーチンの定型。 同一のインターフェイスの サブルーチンを用意すると メインの処理 標準化した呼び出し仕様 標準化した結果形式仕様 A サブルーチンAの処理 B サブルーチンBの処理 サブルーチンAと同種の機能をもつ サブルーチンBに処理を切り替えても そのままメインの処理が動く! 具体的な手法(サブルーチン切り替え) # mainの処理 $mode = 1; # 手で修正などなど $result = &test-1($data) if $mode == 1; $result = &test-2($data) if $mode == 2; print $result; # サブルーチン test-1 sub test-1 { #略 } # サブルーチン test-2 sub test-2 { #略 } サブルーチンの入出 力仕様の統一がミソ 以下、必要に応 じて追加する ライブラリ形式(複数プログラムで使 用可能)にすると B A プログラムB 固有の部分を記述 プログラムA 固有の部分を記述 必要に応じて、共通部分を 呼び出し 具体的な手法(ライブラリ) myscript_A.pl require “mylibrary.pl”; #略 $result = &MyLib::format($data); print $result; pakage MyLib; mylibrary.pl sub format { #略 } 1; ライブラリ (上記の例では mylibrary.pl )を別ファイルにできる より高度な話 モジュールを使うと、オブジェクト指向的な処 理ができます。 その場合でも基本的な考えは、今回の処理例 と同じです
© Copyright 2024 ExpyDoc