''[[FrontPage]]''
* 自作サブルーチンのパッケージ化 [#pc1227f3]
自作cgi掲示板に使ったID⇔文字列対応関数を例にします。~
** 関連ページ [#c81b1112]
-[[Perl・CGI入門/配列要素のシャッフル]]
ファイル名: 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,...,以下改行なしで続く
*** 参考ページ [#r02f770b]
http://perl.misty.ne.jp/19.html#b~