
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[$_]);}}
}
矢印の部分の部分の括弧ですが、これはどのような意味があるのでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
レキシカルスコープと呼ばれるものを作るためです。
Perl では { } で囲まれた範囲(ブロック)にレキシカルスコープと呼ばれるものができます。
レキシカルスコープ内で my を付けて宣言さた変数(@new)はそのブロック終了後(対応する } より後ろ)は使えなくなり、間違えて同名の変数(@new)を再使用してしまう間違いを犯しにくくなります。
空のブロックでなくても、sub{}、if{}、foreach(){} など、さまざまなブロックでレキシカルスコープは作成されます。
「Perl スコープ」で検索されるといろいろ発見があると思います。
回答ありがとうございます。
とても詳しく説明いただき、感謝いたします。
今まで{}はいつもsubやifがあったので、それがない場合の意味が不明でしたが、これでようやく理解出来ました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外処理のフローチャートの記...
-
ACCESSのVBAでPrivate Sub ~en...
-
perlの構文でカンマの意味が分...
-
Inline CでOpenMPは使えますか?
-
GOSUB命令とは
-
Excel VBAで、ユーザーフォーム...
-
フォーム名一覧の取得
-
標準モジュールを削除したい。(...
-
本当にPublicな変数(配列で)
-
VBAProjectのモジュ...
-
同一筐体におけるPerlの複数バ...
-
VBAで別モジュールへの変数の受...
-
教えて下さい。
-
「デバイスは PRN を初期化でき...
-
CGI.pmはもう古い!?
-
モジュールからフォームのボタ...
-
pythonでファイル移動できません。
-
Perlの処理待ちコマンド
-
VBAで「メモリが不足しています」
-
吉里吉里で条件分岐が上手くい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
”:”がいっぱいの文について。
-
オフコン(富士通Kシリーズ)...
-
エラトステネスの篩について。
-
My関数の有効な使い方。
-
初歩的な質問なのですが、サブ...
-
Perlのサブルーチンで連想配列...
-
perlで文字の一部を削除したい
-
COBOLで、Shellを起動するには?
-
このプログラムはどのような仕...
-
日記CGIの改造(ログを逆順に表示)
-
My Sqlのデータベースを扱うサ...
-
配列と互換性のない型の要素に...
-
perlの構文でカンマの意味が分...
-
GOSUB命令とは
-
ACCESSのVBAでPrivate Sub ~en...
-
VC++ 高速演算コードの沢山の変...
-
サブルーチン実行前後に処理
おすすめ情報