こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

サブルーチンやif分以外での中括弧

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[$_]);}}

}

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

よろしくお願いします。

投稿日時 - 2011-07-15 01:12:49

QNo.6876596

困ってます

質問者が選んだベストアンサー

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

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

「Perl スコープ」で検索されるといろいろ発見があると思います。

投稿日時 - 2011-07-15 08:13:23

お礼

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

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

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

投稿日時 - 2011-07-15 08:44:58

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2011-07-15 01:43:08

お礼

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

投稿日時 - 2011-07-15 08:40:34

あなたにオススメの質問