電子書籍の厳選無料作品が豊富!

perlについて学習中で、現在フリーのスクリプトを見て勉強しております。

中括弧の使い方を教えて欲しいです。

sub test { print"OK"; }
if ($test>1) { print"OK"; }else{ print"NG";}

上記のようにサブルーチンやif文での使い方は分かるのですが、フリーのスクリプトの中に単に中括弧を使用している部分がありました。

例)

{ ←この括弧

   my(@new);
   for(0..3){if($tmp[$_]=~/jpg/){push(@new,$tmp[$_]);}}

}

矢印の部分の部分の括弧ですが、これはどのような意味があるのでしょうか?

よろしくお願いします。

A 回答 (2件)

レキシカルスコープと呼ばれるものを作るためです。


Perl では { } で囲まれた範囲(ブロック)にレキシカルスコープと呼ばれるものができます。
レキシカルスコープ内で my を付けて宣言さた変数(@new)はそのブロック終了後(対応する } より後ろ)は使えなくなり、間違えて同名の変数(@new)を再使用してしまう間違いを犯しにくくなります。

空のブロックでなくても、sub{}、if{}、foreach(){} など、さまざまなブロックでレキシカルスコープは作成されます。

「Perl スコープ」で検索されるといろいろ発見があると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

とても詳しく説明いただき、感謝いたします。
今まで{}はいつもsubやifがあったので、それがない場合の意味が不明でしたが、これでようやく理解出来ました。

ありがとうございました。

お礼日時:2011/07/15 08:44

本当にこう書いてあるだけだと無意味だけど, 「スコープ」について調べるといいかも.

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
スコープについて調べてみたら、いろいろ参考になるサイトが見つかりました。
ありがとうございました。

お礼日時:2011/07/15 08:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!