

|
|
HOME >> アルファベットで関数を検索 >> sub
sub [サブルーチンを宣言する]
[関数の使い方・書式]
sub ☆ [ ★]
sub ☆ [ ★] □
○ = sub [ ★] □
| ☆: |
(スカラー) |
サブルーチン。 |
| ★: |
(スカラー) |
プロトタイプ。 ・・・ 表記方法は 「機能説明」 を参照。 |
| □: |
(スカラー) |
ブロック。 |
| ○: |
(スカラー) |
無名サブルーチンへのリファレンス。 |
[関数の機能]
☆がサブルーチン名のもの(上2つ) は演算子ではなく、サブルーチンの宣言です。
最初のものは、ブロック□ を同時に定義しています。
2つ目のものは、後で定義を行なうことを前提にした前方宣言です。
前方宣言しておけば、function や function() のように呼び出すことができるようになります。
(紛らわしいので推奨はしません)。
最後のものは、無名サブルーチンを生成し、それへのリファレンスを返す演算子です。
無名サブルーチンの中で、その外側で宣言されたレキシカル変数を使っている場合、その変数はスコープの外側でも値を保持しつづけるクローじゃとなります。
プロトタイプ★を指定すると、組み込み関数のように&をつけないで呼び出した場合、
宣言した引数の数や型をPerlがチェックしてくれるようになります。
但し、従来のように&をつけた呼び出し、サブルーチンリファレンス \&subhoge、間接サブルーチン ${ $subreg }、
メソッド呼び出しではプロトタイプの効果は現れません。
[書式の例]
1. sub hoge;
2. sub hoge { $arg = shift; print "$arg\n"; }
3. $subref = sub { $arg = shift; print "$arg\n"; };
4. sub hoge($;);
5. sub hoge($;) { $arg = shift; print "$arg\n"; }
6. $subref = sub($;) { $arg = shift; print "$arg\n"; };
|