SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK