自作サブルーチンのパッケージ化 †自作cgi掲示板に使ったID⇔文字列対応関数を例にします。 関連ページ †ファイル名: idroll.pl #**************************************************************# # ID Roll # #**************************************************************# package idroll; # パッケージを定義 # # # sub roll # 文字列取り出し関数 # { # # open (DECK, "<./deck.txt"); # ./deck.txtを読み込み専用で開く # flock (DECK, 1); # 共有ロック(LOCK_SH == 1) # my $mssids = <DECK>; # 変数に全ファイル内容をコピー # my @mssids = split (',', $mssids); # カンマ区切りで配列化 # return $mssids[$_[0]]; # 引数に対応する文字列を返す # } # # # # 1; # 読み込み失敗を防ぐ # 呼び出し例(ファイル名: write.cgi) #!/usr/bin/perl -w #perl bbs\write.cgi require './jcode.pl'; # for Shift-JIS # require './idroll.pl'; # for roll # # 途中省略 # Get ID ******************************************************# if( $form{'mssid'} ne '****' ) # 入力が管理人の使用する特殊文字列でないかどうか # { # 特殊文字列でない場合 # $mssid = idroll::roll( $form{'mssid'} - 1 ); # パッケージからサブルーチンを呼び出す # } # # else # # { # 特殊文字列である場合 # $mssid = '<b><font color="#00FF00">Hermit Webmaster</font></b>' # 管理人専用文字列 # } # # #/Get ID ******************************************************# # 以下省略 参考までに(ファイル名: deck.txt) Half-Titan Demonologist,Nibelung Druid,Sprite Geomancer,High Elf Thaumaturgist,...,以下改行なしで続く 参考ページ † |