Perlスクリプトの基本メモその1〜CGIも〜
Perlスクリプトの基本メモその1。今回は主に大枠部分をメモ。CGIについても簡単に触れる。
シバン行とstrict、warningsモード設定
#!/usr/bin/perl use strict; use warnings;
念頭においておきたいこと
- $ スカラー(単一の値)
- @ リスト
- % ハッシュ
評価コンテキスト
スカラーコンテキストとリストコンテキストがある。
例えば以下のとおり。
$x = @l; #xはスカラー変数のため、単一値(この場合はリストの長さ)が代入される @x = @l; #xはリスト変数のため、リスト(この場合はlそのもの)が代入される ($h, @t) = @l; #こんなこともできる
スカラーコンテキストにするには以下の方法がある。
サブルーチンにおいて評価コンテキストを検知するには「wantarray」を利用する。
サブルーチン
定義
sub subname { #引数をプライベート変数に代入 my ($param1 , $param2 , $param3) = @_; #処理 #呼び出しのコンテキストに応じた値を返す if(wantarray) { return リスト値; } else { return スカラー値; } }
呼び出し
- 戻り値の代入先の変数に応じて、呼び出しコンテキストが決定される
- 組み込み関数と違い、引数の括弧が必須(引数がない場合も)
変数スコープ
- my プライベート変数を生成。推奨される
- our グローバル変数を生成
- local (新たな変数の生成ではなく、)指定した変数が別の値を保持できる新たなスコープを生成。スコープから抜けると、変数の値は元に戻る
モジュール
モジュール(.pm)のテンプレート
参考文献より抜粋。
package Module_name; #変数とサブルーチンをモジュールの名前空間に use strict; #コンパイラが厳格なチェックを行う use Carp; #ユーザ視点からエラーの位置を特定するモジュール our (@ISA, @EXPORT, @EXPORT_OK); #このテンプレートの中で用いる変数 require Exporter; @ISA=( 'Exporter' ); #インポートとエクスポート @EXPORT=qw( modele_vars module_subs ); #自動でエクスポートする @EXPORT_OK=qw( module_vars module_subs ); #要求次第でエクスポートする # #モジュールの機能の実装 # 1; #真の値でモジュールの終了を示す
- 「qw(a b)」は「('q', 'w')」と同等。(quote words)
- warn は開発者目線、carp は利用者目線の行番号を出力
- モジュールの構文チェックは「perl -wc filename.pm」にて
モジュールのインポート
- use スクリプト起動時に読み込み。通常はコチラ。
use Module_name qw(module_vars module_subs);
- require require実行時に読み込み
OSコマンドの実行
移植性を考えると、可能な限り使用しない方がよいだろうが。
コマンド展開
foreach $line ( `cat $filepath` ) { print "$line"; }
system関数(コマンドの実行結果をそのまま標準出力する場合はコチラ)
system "cat $filepath";
CGI
仕組み把握のため、あえてCGIモジュールを使わない場合をメモ。
最低限の記述
#!/usr/bin/perl print "Content-type: text/html\n\n"; #これ以降標準出力に出力した内容がHTTPレスポンスのメッセージボディに入る
CGIのエラー内容をブラウザに返す設定
use CGI::Carp qw(fatalsToBrowser);
参考サイト
補足:シェルスクリプトでCGI
#!/bin/sh printf "Content-type: text/html\n\n" #これ以降標準出力に出力した内容がHTTPレスポンスのメッセージボディに入る
GETパラメータ
- 送信:URL末尾の?に続けて、値を + 区切りで指定。(ゆえにHTMLのFORMによるGETは使えない??)
- 取得:コマンドラインパラメータと同様($1とか)にて取得可能
POSTパラメータ
- 送信:HTMLのFORMによるPOST
- 取得:POSTの内容は `cat` にて取得可能(※catに引数不要)
- 参考サイト:html & シェルスクリプト勉強中 | CreateWindow!
参考文献
ミニマルPerl ―Unix/LinuxユーザのためのPerl習得法
- 作者: Tim Maher,安藤慶一,磯部孝一郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/06/21
- メディア: 大型本
- 購入: 4人 クリック: 166回
- この商品を含むブログ (25件) を見る