SAK 図書館
CGI-Perl 基礎実地編 - 実習9 (文字関数、数値関数)
■test09.cgi
------ ↓ ここから ↓ ------
#!/usr/local/bin/perl
#//準備
*data = GetPara();
$a = $data{'a'};
$b = $data{'b'};
#//文字列結合
$c = $a . $b;
#//小文字変換
$d = lc($a);
#//大文字変換
$e = uc($a);
#//文字列切り出し
$f = substr($a, 1, 2);
#//文字列バイト長
$g = length($a);
#//文字列検索
$h = index($a, 'abc');
#//書式フォーマット
$i = sprintf('書式フォーマット = %08d', $a);
#//空白削除
$j = $a;
$j =~ s/ //g;
#//文字置き換え
$k = $a;
$k =~ s/a/b/g;
#//文字列分割
@l = split(/\,/, $a);
#//乱数発生
srand(time ^ ($$ + ($$ << 15)));
$m = int(rand(100));
#//整数化
$n = int($a);
#//環境変数
$ip = $ENV{'REMOTE_ADDR'}; #// リモート端末の IP アドレス
$url = $ENV{'HTTP_REFERER'}; #// リモート端末の直前の URL
$blws = $ENV{'HTTP_USER_AGENT'}; #// ブラウザ情報
$path = $ENV{'PATH_INFO'}; #// 現 CGI のパス情報
#//HTML 出力
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>文字関数、数値関数テスト</P>\n";
print "<P>パラメタ a = $a<BR>";
print "パラメタ b = $b</P>\n";
print "<P>";
print "文字列結合 = $c<BR>";
print "小文字変換 = $d<BR>";
print "大文字変換 = $e<BR>";
print "文字列切り出し = $f<BR>";
print "文字列バイト長 = $g<BR>";
print "文字列 abc 検索 = $h<BR>";
print "$i<BR>";
print "空白削除 = $j<BR>";
print "文字置き換え a → b = $k<BR>";
print "文字列分割 「,」 = ";
foreach (@l) {
print "$_<BR>";
}
print "乱数発生 0 〜 99 = $m<BR>";
print "整数化 = $n<BR>";
print "リモート端末の IP アドレス = $ip<BR>";
print "リモート端末の直前の URL = $url<BR>";
print "ブラウザ情報 = $blws<BR>";
print "現 CGI のパス情報 = $path<BR>";
print "</P>\n";
print "</HTML>\n";
#// 終了
exit(0);
#//=====================================================================
#// パラメタ取得
#//=====================================================================
sub GetPara
{
my($encode) = @_;
my($method) = $ENV{'REQUEST_METHOD'};
local($qu, @in, $key, $val);
#// 日本語コード変換 jcode.pl 読み込み
require 'jcode.pl' if $encode;
#// パラメタ取得
if ($method eq 'GET') {
$qu = $ENV{'QUERY_STRING'};
}
elsif ($method eq 'POST') {
read(STDIN, $qu, $ENV{'CONTENT_LENGTH'});
}
local(@qu) = split(/&/, $qu);
foreach (@qu) {
tr/+/ /;
($key, $val) = split(/=/);
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack('c', hex($1))/ge;
$val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack('c', hex($1))/ge;
$val =~ s/\r\n/\n/g;
jcode'convert(*key, $encode) if ($encode);
jcode'convert(*val, $encode) if ($encode);
$in{$key} = $val;
}
#// 戻り値セット
return *in;
}
------ ↑ ここまで ↑ ------
■解説
・この test09.cgi は、test08.htm と対になっています。
test08.htm を呼び出して、パラメタ a に何か入力して実行ボタンを
押します。
そうすると各関数の処理結果が test09.cgi によって表示されます。
・関数詳細は、SAK 開発言語資料の
2001.01.25 CGI-Perl 基礎編 (その五) 文字列関数 substr、index、split、localtime、crypt
2001.01.25 CGI-Perl 基礎編 (その六) 数値関数、その他 srand、rand、int、sleep、$ENV
で確認して下さい。
■補足
・もっと他にも組み込み関数がたくさんありますが、基本はこんなところかと
思います。今のところ私はこれで困りません。
■実地
・test09.cgi も実際に作成してテストしてみましょう。
いろいろと入力値を変えてみたり、cgi を修正して試してみると良いです。
■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料