プロが教えるわが家の防犯対策術!

Perl初心者です。初歩的な質問ですが、
サブルーチンの中で my だと、その下の{ }
ブロックではmyで宣言したローカル変数がスコープされないので 
localを使うのではないかと思いますが、
それだと、use strictではエラーになります。
こんなときどう処理したらよいのでしょうか。

A 回答 (2件)

> なんか、よい本などあればご紹介していただけたら、ありがたいなと、思います。



私は以前、文法が Perl とかなり似ている C/C++ で仕事をしていたので、覚える時にはリファレンス(「CGI&Perlポケットリファレンス」技術評論社)くらいしか必要ありませんでした。
そのため、入門書として推薦できる本を残念ながら知りません。

変わりに技術系書籍のレビュー(?)サイトを紹介しますので、そちらで良さそうな本にあたりをつけて、書店で実際に見ながら選ばれるとよいと思います。

参考URL:http://www.1point.jp/~book_2ch/webprog/perl.html
    • good
    • 0
この回答へのお礼

leaz024 さん ありがとうございます。
参考書の紹介のお願いまでしてすみませんでした。
ご紹介いただいた、サイトは大変よいサイトでした。
ありがとうございます。

お礼日時:2003/06/10 19:27

> サブルーチンの中で my だと、その下の{ }


> ブロックではmyで宣言したローカル変数がスコープされないので
> localを使うのではないかと思いますが、

これって試されました?
my 変数は、ネストした内部のブロックでも利用できますよ。
利用できないのは、呼び出した先の関数の中です。

また、呼び出し先の関数で利用したい場合でも、引数として値またはリファレンスを渡すのが一般的で、local変数を使う機会はあまりありません。

それでも local を使いたい場合、local で利用する変数をグローバル変数として宣言しておかなければなりません。
・Perl5.0x にはグローバル宣言の方法がないので、パッケージ修飾をした変数を利用します。(パッケージ修飾した変数は、use strict 環境でも宣言なしで利用することができます。)
・Perl5.6 以降では our を使って、グローバル変数を宣言することができます。

参考URL:http://www.context.co.jp/perlinfo/tech-notes/
    • good
    • 0
この回答へのお礼

leaz024さん ありがとうございます。
私の本の読み間違いです。
{ }の中だと思ったのですが、関数〔サブルーチン)の中なんですね。
まだ初心者なのでいろいろ勘違い、等もしています。
今後ともよろしくお願いします。
なんか、よい本などあればご紹介していただけたら、ありがたいなと、思います。

お礼日時:2003/06/10 15:55

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