Download presentation
Presentation is loading. Please wait.
1
図書館職員のための アプリケーション開発講習会
Perlの星 ~第2話: コードの再利用~ 図書館職員のための アプリケーション開発講習会
2
コードの再利用 定型処理をサブルーチン(関数)にまとめる モジュール化する いずれも基本的な発想は同じです。 ここでは簡単なサブルーチンに
まとめる方法について紹介します。
3
サブルーチンとは 複数のプログラムで使う場合にも便利(ライブラリやモジュール) 定型処理をまとめたもの
プログラム中で複数回呼び出す処理をまとめておくと便利! プログラム中で似たようなプログラムを書かなくて(コピー&ペーストしなくて)もよくなる サブルーチンをバグ対策すると、関係箇所がすべて対策される → 管理が楽になる プログラムが短くなる → 読むのが楽になる プログラムの構造を把握しやすくなる プログラム中で一回のみ呼び出す処理にも有効 同じインターフェイスをもつサブルーチンを切り替えて使える 複数のプログラムで使う場合にも便利(ライブラリやモジュール)
4
変換テーブルを参照するテキスト加工の 基本的な例(簡略誌名変換、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 を 仲介にして変換
5
サブルーチンにまとめる 同色の部分は同一のデータが入る。 赤字の部分はサブルーチンの定型。
$Result = &test{$Data1, $Data2); #サブルーチン name 呼び出し print $Result; # 結果を print # サブルーチン test sub test { my ($data1, $data2) # なんらかの処理 return $result; # return文で結果を返す } 同色の部分は同一のデータが入る。 赤字の部分はサブルーチンの定型。
6
同一のインターフェイスの サブルーチンを用意すると
メインの処理 標準化した呼び出し仕様 標準化した結果形式仕様 サブルーチンAの処理 サブルーチンBの処理 B A サブルーチンAと同種の機能をもつ サブルーチンBに処理を切り替えても そのままメインの処理が動く!
7
具体的な手法(サブルーチン切り替え) サブルーチンの入出力仕様の統一がミソ 以下、必要に応じて追加する # 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 { # 略 サブルーチンの入出力仕様の統一がミソ 以下、必要に応じて追加する
8
ライブラリ形式(複数プログラムで使用可能)にすると
プログラムB 固有の部分を記述 B プログラムA 固有の部分を記述 A 必要に応じて、共通部分を 呼び出し
9
ライブラリ (上記の例では mylibrary.pl )を別ファイルにできる
具体的な手法(ライブラリ) myscript_A.pl require “mylibrary.pl”; # 略 $result = &MyLib::format($data); print $result; pakage MyLib; sub format { # 略 } 1; mylibrary.pl ライブラリ (上記の例では mylibrary.pl )を別ファイルにできる
10
より高度な話 モジュールを使うと、オブジェクト指向的な処理ができます。 その場合でも基本的な考えは、今回の処理例と同じです
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.