FrontPage

自作サブルーチンのパッケージ化

自作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,...,以下改行なしで続く

参考ページ

http://perl.misty.ne.jp/19.html#b


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-08 (月) 02:08:14 (5204d)