トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

Script/TipsPerl

INDEX

Perlのメモとか小技とか…

TEMPLATE

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl -T
#####  Character-code is euc-jp. Tab-size is 4 space character.           #####
###############################################################################
## 
###############################################################################
use strict; # restrict unsafe constructs
use warnings; # control optional warnings ( as /usr/bin/perl -w )


###############################################################################
##    End Of File (source.pl)                                                ##
###############################################################################

strict プラグマ

変数宣言を厳密させる等々…

warnings プラグマ

perl のオプション "-w" の置き換え。オプションの場合は、スクリプト全体に適応されるが、プログラマは閉じられたブロックに限定される。

1度しか使われない変数名、設定される前に使われている変数、サブルーティンの再定義、未定義のファイルハンドルの参照や、 read-onlyでオープンしたファイルハンドルへの書き込み、数値に見えない値を数値として使った場合、配列をスカラであるかのように使った場合、 100段階以上のサブルーティンの再帰、その他たくさんの疑わしい事に警告を出します。

Taintモード (汚染検出モード)

perl のオプションに -T を追加する。コマンドライン引数やCGIのパラメータなどの外から取得した変数をファイル名として開くときにエラーとなる。

これを回避するには、洗浄が必要となる。例えば、外部からファイル名を取得し $fn にセットして開こうとしている場合、以下のように正規表現を使ってデータの洗浄する。

if ($fn =~ /^([a-z0-9]+)$/i) {$fn = $1} else {die}

ただし、洗浄が正しくされてるかどうかまでは感知してくれないので、"-T" オプションのチェックを通ったとしても安全性は保証されない。

 必要なときにだけ、no strict 'refs';

どうしても use strict にするとプログラムが動かない場合は、no strict を利用して該当箇所(ブロック内)だけその効果を無効化する。

ただし、no strict; ではすべての use strict; の効果が消されてしまう。use strict; には、vars、refs、subs の3種類の効果がある。vars はすでに our があり、subs は \&subname という書き方があるので、実際に必要となるのは no strict 'refs'; のみとなる。

Perl 6では、このstrict(とwarnings)が標準となります。例外は-eをつけて、コマンドラインから実行する場合だけです。

Perl Module

 The CPAN Search Site

CPANに登録されているモジュールを検索する。

http://search.cpan.org/search?module=<Module-Name>

 モジュールバージョン

インストールされている個別のモジュールのバージョンを調べる(例はLWP)。

perl -MLWP -e 'print $LWP::VERSION . "\n"'

perlでいろいろ

 ディレクトリ一覧

カレントディレクトリのアイテム一覧

perl -e 'opendir(DIR, "./");print join("\n", readdir(DIR))."\n";closedir(DIR);'

最終更新時間:2009年02月19日 19時15分23秒 指摘や意見などあればSandBoxのBBSへ。