Perl を使おう!


[ 目次 / 次頁 ]

Perl とは?

Perlは、変数の型やサブルーチンの宣言などなしに、非常にシンプルな表現により プログラミングを行なうことができます。 例えば、プログラミングの初歩で必ずやる Hello, world! を表示するスクリプトは
  print "Hello, world!\n"
と書くだけです。また、本来perlはデータリダクション言語として開発された言語であるので、様々なファイルを処理して、情報を効率良くまとめることは得意分野です。 Perlを使いこなすことにより、実用的なプログラムを書いたり、レポートをまとめたり、さらに、ホームページにおいてはCGIやSSIとして多彩な表現力を演出できることでしょう。 ここでは、Perlを実用的な観点から利用するために必要となることについて、まとめてみます。

Perlの動かし方

  1. コマンドラインからの実行

    perl の -e スイッチによりコマンドラインからプログラムを直接与えられる。スクリプトは''の中に記述する。
        >  perl -e 'print "Hello, world!\n"'
    
  2. ファイルに記述したスクリプトを実行

    エディタ(vi,muleなど)で、スクリプトを記述し、ファイル名を引数にして実行する
    print "Hello, world!\n"
    がhello というファイルに記述されている場合には、
        > perl Hello
    
    もし、システムが #!によってインタプリタを指定できる(unix)ならば、ファイルの先頭に
        #!/usr/bin/perl
    
    を入れて、ファイルを実行可能にすれば(chmod 755)システムが自動的にPerlを起動します。 ここでは、hello というファイルを作ります。
        ===begin [hello] =========
        #!/usr/bin/perl
        print "Hello, world!\n";
         
        > chmod 755 Hello
        > hello
    
    これで、うまく実行できない場合は、perlのパスが違っていることもあるので、
        > which perl
    
    により、確認し自分の環境でのパスに変更して下さい。
  3. デバッグモードでの実行。

    Perlを -d スイッチを伴って実行するとデバッグモードで起動されます。そこで、個々のスクリプトを順次実行できます。デバッグモードを終了するのは q です。
        > perl -d
        DB<1> print "Hello, world!"
      Hello, world!
        DB<2>q          <--終了 
    

CGI プログラムとして利用する

CGIについて (Apache の設定など)
~you/public_html/cgi-bin/hello1.cgi として次のプログラムを記述する。
    === begin [hello.cgi]=== 
    #!/usr/bin/perl
print "Hello, world!\n";
このまま、だと "Document contain no data"(Netscape 3.01) などというメッセージが出て、思うように表示できません。ブラウザには様々なデータを表示する機能がありますが、このCGIプログラムの返す結果がどんなデータ知らないと表示のしようがないのです。 ブラウザにテキストを表示していることを知らせなければいけません。
    === begin [hello1.cgi]=== 
    #!/usr/bin/perl
    print "Content-type: text/plain\n\n";
    print "Hello, world!\n";
Content-type: text/plain と伝えることにより、ブラウザはこのデータはテキストデータと認識できるのです。 \n\nと2回改行を入れていますが、Content-type を指定した次の行は空行でなければならない、という規則があります。 さてこれで、大丈夫です。 <A HREF="/~yama/cgi-bin/hello1.cgi">例)簡易版</A> のようにリンクを張って実行してみましょう。(このファイルhello.cgiは実際には /~yama/public_html/cgi-bin/hello.cgi ですが HTML での絶対パスで記述します。public_html を省略する。)
例)簡易版

しかし、このままではテキストとして表示しただけなので、あまり面白くありません。 しっかり、HTML文書として扱ってもらえるようにしましょう。ついでに、タグを入れて見ましょう。

    === begin [hello.cgi]=== 
    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "<HEAD>\n<TITLE>Hello, world!</TITLE>\n</HEAD>\n";
    print '<BODY BGCOLOR="#FFFFFF">\n';
    print "<H2>Hello, world!</H2>\n";
    print "</BODY>";
    print "</HTML>"
例)HTML文書版

SSI で動かす

SSIについて (設定など)
SSIとして動かす場合には、CGIほどブラウザに気を使わなくても大丈夫です。 ~user/public_html/hello.pl として次のプログラムを実行可能にします。
    === begin [hello.pl]=== 
    #!/usr/bin/perl
    print "Hello, world!\n";
ここで、SSIについての設定が終っていれば、
<!--#exec cmd="../cgi-bin/hello.pl" -->
のようにドキュメントで指定すれば実行可能です。 (SSIでプログラムを実行する場合に絶対指定でファイル名を指定する際は、CGIとは異なりフルパスで指定します。 例えば、/home/~user/public_html/cgi-bin/hello.pl のようにします。~は指定できません。相対パスで、 ../cgi-bin/hello.pl としてもO.K.です。) 下がその例です。

今日の宿題!

自分のホームページでCGI、SSIを利用可能にし、print を利用したperlスクリプトによりCGI、SSIを利用したホームページを作成する。
[ 目次 / 次頁 ]
最終更新時刻
by Yoshiro Yamamoto