ビギナーズ CGI

 初歩から始める初心者向けPerl-CGI講座  

| トップページ | CGI設置 | CGI作成 | 作成事例 | 設置用語 | 作成用語 | 関数リファレンス | FAQ | お問合せ |
  
CGIの設置方法
フリーで配布されているCGIを設置する際の手順や注意事項などの説明です。

CGI作成の初歩
初めてCGIを作る方向けの手順を簡単な例で説明しています。

CGI作成ヒント集
こういう事をする時は、どのように行えばいいのか?など具体的な事例を紹介します。

CGIの設置に関する用語
CGIの作成に関する用語
CGIの設置や作成時に使われている用語や関連知識を掲載しています。

設置に関するFAQ
作成に関するFAQ
設置や作成をする際に起こりがちなトラブルの説明と、よくある質問とその回答を掲載しています。


 
 

CGI 作成の初歩
 HTMLページを表示してみる  文字列の置き換え
 複数行のHTMLページを表示  フォームから入力された値を表示
 ソース内にコメントを書く  ファイルに書き出す
 変数を使った簡単な計算  ファイルから読み込む
 条件式を使って分岐する  フォーム入力からファイルに書き出す
 文字列の扱い方を練習  サブルーチンを使用してみる
 ループを練習 (繰り返し処理)  現在の時刻を取得する
 配列の簡単な使い方  ファイルの簡単な操作をする
 配列の操作を行ってみる  不特定が書き込むファイルの排他処理
 文字列の検索と取出し  CGI から画像を表示する



10. 文字列の検索

文字列の検索や置き換えは、パターンを正規表現と呼ばれるもので指定します。
正規表現はその方法が非常に奥深い為、ここでは簡単な説明のみ行います。

$変数 =~ /パターン/パターンマッチ演算子 パターンマッチ演算子の部分に i を付けると大文字小文字を区別
せずに検索を行います。
if ($tmp =~ /AAA/i)
{
  print "AAAを含みます";
}
左の例は、もし変数 $tmp に AAA という文字列が含まれていたら
(大文字小文字の区別なし) AAAを含みます と表示します。
この他にも、【先頭が〜】 や 【末尾に〜の文字列がある】
など様々な検索方法がありますので下記を参照して下さい。


ここでは変数 $aaa に AAA という文字列が含まれるかどうかを探します。
$aaa =~ /AAA/ をif文の条件とすると、$aaaに AAA が含まれている場合に真となります。


実行結果
文字列AAAが含まれています。



 パターンの中にメタ文字を使うと、より自由度の高い検索が行えます。
^ 〜を先頭に含む などの検索をしたい時に使います。
 if ( $tmp =~ /^AAA/ ) AAAが先頭にある場合
$ 〜が末尾にあるかどうかを検索したい時に使います。
例 if ( $tmp =~ /AAA$/ ) AAAで終わる場合
. 改行を除く任意の1文字を表すメタ文字で、下のように
した場合、 一文字 + BCD 例えば ABCD、BBCD、CBCD
など先頭の一文字は何でもよくなります。
例 if ( $tmp =~ /.BCD/ )
* これをつけた左辺の文字の 0文字以上の繰り返し文字に
マッチします。
例 if ( $tmp =~ /A*/ ) 0文字以上のAにマッチ
+ 左辺の文字の 1文字以上の繰り返し文字にマッチします。
 if ( $tmp =~ /A+/ ) 1文字以上のAにマッチ
? 上記2つと同じ意味で、こちらは 0 か 1 かという意味です。
\ メタ文字をエスケープできます。
| 又は (論理和) を示します。
例は下記を参照
() パターンをグループ化する事ができます。
例 if ( $tmp =~ /(AAA) | (BBB)/ ) AAA 又は BBB を含む
[] 〜のいずれか
 if ( $tmp =~ /[A-H]/) A〜H のいずれか
{} 量の指定 〜個 〜以上 〜以下
例 if ( $tmp =~ /A{10}/) 10個のA
例 if ( $tmp =~ /A{10,}/) 10個以上のA
例 if ( $tmp =~ /A{10,20}/) 10文字以上20文字以下のA


 特殊文字や〜文字などに使うメタ文字 (一部)
\d 数字にマッチします。
[0-9] と同じ意味を持ちます。
\D 数字以外にマッチします。
\w 半角英数字にマッチします。
\W 半角英数字以外にマッチします。
\s スペースにマッチします。
\S スペース以外にマッチします。
\n 改行にマッチします。
\t タブにマッチします。



マッチした文字やその前後の文字を取り出す

検索してマッチした文字やその前後の文字を取り出すことができます。

$` マッチした部分の左辺
$& マッチした部分
$' マッチした部分の右辺


下の例では ABCDEFGHI の文字列を検索し、DEF にマッチさせて前後の文字と
マッチした文字をそれぞれ表示します。


実行結果
左辺はABC マッチした部分はDEF 右辺はGHI




マッチした部分の左辺を表す $` はキーボードの 【SHIFT】 を押しながら 【@】
押した時に出る バッククォーテーションです。
右辺を表す $'【SHIFT】 を押しながら 【7】 キーで出ます。



次項は置き換えを行いますが、今回の検索と概要はほとんど同じです。



Beginner's CGI  - Copyright (C) 2003 aimix. All Rights Reserved -