[Top]
Perlの基本

PerlでCGIを作りましょう 〜その1〜

  1. Perlとはどんな言語?
    Perlは配列や文字列の操作に適したスクリプト言語です。
    CGIは主に配列や文字列の操作がメインとなるため、 Perlならばわりと簡単にCGIを作成することができます。
    言語的にもC言語に似ているので、C言語でプログラムを作ったことがある方なら、 短期間でPerlを習得する事ができます。

    また、スクリプト言語ですので、テキストで記述したソースをそのまま実行できます。
    面倒なコンパイル等を行なう必要はなく、プログラムを記述してからすぐに動かして 動作確認を行なうことができます。

    ※Perlで作成したプログラムの事をPerlスクリプトと呼びます。

  2. Perlの場所
    Perlスクリプトはテキストで記述したファイルに実行属性つ付けて実行するのですが、 そのままでは、サーバーは単なるシェルとの区別がつきません。
    Perlスクリプトの最初の行に #!サーバー内のPerlの場所  という風に記述し、以降の行をPerlで実行させる様にしておく必要があります。

    例)  #!/usr/local/bin/perl

    そのため、サーバー内のPerlがある場所を使用するサーバーの利用規程等を参照したり、 サーバーの管理者に直接質問する等の方法で確認しておく必要があります。

  3. print文でHTML出力
    PerlでCGIを作るときに基本となるのはHTML形式のテキスト出力です。
    そして、HTML形式のテキストを出力するために使う命令が print文 です。
    #!/usr/local/bin/perl
    
    print "Content-type: text/html\n\n";
    print "<html>\n";
    print "<head>\n";
    print "</head>\n";
    print "<body>\n";
    print "<h1>HTML出力サンプル</h1>\n";
    print "こんな感じでHTMLを出力します。<br>\n";
    print "</body>\n";
    print "</html>\n";
    
    こんな風に書いてHTMLを出力します。

    ここで大切なのが、一番最初のprint文で出力する Content-type: text/html\n\n です。
    Content-type: text/html は、 「これからHTMLを出力します」という意味を表しています。
    HTMLの出力前に必ず付けるお決まりの文句と思ってください。
    行の最後の改行2つ(\n\n)は、 1つ目が Content-type: text/html の行の終わりを表し、 2つ目(空改行)が HTMLを出力する前の定義の終わりを表しています。

    次に、各print文の行の最後に付いているセミコロン( ; )ですが、 これはC言語と同じで1つの文の終わりを表しています。
    このセミコロンを付け忘れるだけで Internal Server Error になってしまうので、 セミコロンの付け忘れには充分注意しましょう。

  4. シングルクォーテーションとダブルクォーテーション
    print文などで文字列を扱う場合には、文字列をシングルクォーテーション( ' ) またはダブルクォーテーション( " )でくくります。
    シングルクォーテーションでくくるかダブルクォーテーションでくくるかでは多少意味が異なります。

    シングルクォーテーション( ' )でくくった場合は、そのままの文字として扱われます。

    例) print 'そのまま\n出力します';

    [表示]
    そのまま\n出力します

    ダブルクォーテーション( " )でくくった場合は、メタ文字(\+アルファベットで制御コードなどを表す文字)や 変数等を挿入して扱う事ができるようになります。

    例) print "メタ文字を\n出力します";

    [表示]
    メタ文字を(ここに改行コードが入る)出力します

    状況に応じて使い分けるしかないのですが、全角の表示でShiftJISを使用する場合に、 「ソ」や「表」といった文字は2バイト目が \ と同じコードとなり、文字が化ける場合が あるため、全角の表示はシングルクォーテーション( ' )でくくる方が無難です。

  5. 変数
    Perlで扱う変数は大きく分けて3つあります。

    スカラー変数は単なる普通の変数で、先頭が $ で始まる名称の変数です。
    例)
    $Number = 1 ;
    $String = "文字列" ;

    配列はスカラー変数が複数集まったもので、先頭が @ で始まる名称の変数です。
    また、配列は各要素を $変数名[0〜] という形で直接操作することもできます。

    例)
    @Numbers = ( 1 , 4 , 2 ) ;
    $Total = $Numbers[0] + $Numbers[1] + $Numbers[2] ;

    ※ ( xx , xx , xx , … ) はリストといい、数値や文字列の集合を表しています。

    連想配列(ハッシュ)は配列の添え字を文字列で 表せるようにしたもので、先頭が % で始まる名称の変数です。
    連想配列の各要素は $変数名{ '文字列' } という形で直接操作します。

    例)
    %TEST = ( 'January' , '一月' , 'February' , '二月' , 'March' , '三月' ) ;
    $COOKIE{'name'} = 'バギンズ' ;
    $FORM{'subject'} = '〜連想配列とは〜' ;

    ※CGIへ送信されたフォーム内容等は、各入力域ごとに分割後、 連想配列へ格納して使用します。


CGI Saloon