Hatena::ブログ(Diary)

gan2 の Ruby 勉強日記 このページをアンテナに追加 RSSフィード

この日記のはてなブックマーク数 PV/ 1634543 Subscribe with livedoor Reader 役立つリンク集

2007-11-05

strict プラグマについて

strict プラグマについてよく分かっていないので、

自分なりにまとめながら理解しようと思う。

なお、以下の内容はstrict - 安全ではない今ストラクトを制限するPerlプラグマ

をかなり参考にしています。

(まだ書き終わってない! -> vars subs)


概要

strictプラグマには vars refs subs の3つの制約があり、

特に指定をしない場合は3つ全ての制約が受ける。

# 3つ全部
use strict; 

# 1つずつ指定する場合はこう
use strict "vars";
use strict "refs";
use strict "subs";

# はずしたりもできるみたい
use strict;
no strict "vars";

vars

ローカル変数を必ずmy()を使って宣言することと、

グローバル変数を$X::fooのように修飾することを義務付ける。

ただし、$a と $b については、sortによって使われるため特別扱い。

our と use vars がよく分からない(´・ω・`)


refs

シンボリックリファレンスを使ったときにランタイムエラーを発生させる。

シンボリックリンクリファレンス

Perlで一般的に使われているのはハードリファレンス

シンボリックリファレンスとは、

「実行時に生成される値や変数の中の値よって、

他の変数名やサブルーチン名などを決める」というような処理のこと。

$scalar = 'symbolic_ref';
${"$scalar"}; #これは「$symbolic_ref」と言う変数名を表す。

参考: no title


subs

$SIG{PIPE} = "Plumber"; と書くところで、

"Plumber" を Plumber と書くことを禁止する。