- ベストアンサー
use strictを宣言してlocal変数を使うには?
Perl初心者です。初歩的な質問ですが、 サブルーチンの中で my だと、その下の{ } ブロックではmyで宣言したローカル変数がスコープされないので localを使うのではないかと思いますが、 それだと、use strictではエラーになります。 こんなときどう処理したらよいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> なんか、よい本などあればご紹介していただけたら、ありがたいなと、思います。 私は以前、文法が Perl とかなり似ている C/C++ で仕事をしていたので、覚える時にはリファレンス(「CGI&Perlポケットリファレンス」技術評論社)くらいしか必要ありませんでした。 そのため、入門書として推薦できる本を残念ながら知りません。 変わりに技術系書籍のレビュー(?)サイトを紹介しますので、そちらで良さそうな本にあたりをつけて、書店で実際に見ながら選ばれるとよいと思います。
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
> サブルーチンの中で my だと、その下の{ } > ブロックではmyで宣言したローカル変数がスコープされないので > localを使うのではないかと思いますが、 これって試されました? my 変数は、ネストした内部のブロックでも利用できますよ。 利用できないのは、呼び出した先の関数の中です。 また、呼び出し先の関数で利用したい場合でも、引数として値またはリファレンスを渡すのが一般的で、local変数を使う機会はあまりありません。 それでも local を使いたい場合、local で利用する変数をグローバル変数として宣言しておかなければなりません。 ・Perl5.0x にはグローバル宣言の方法がないので、パッケージ修飾をした変数を利用します。(パッケージ修飾した変数は、use strict 環境でも宣言なしで利用することができます。) ・Perl5.6 以降では our を使って、グローバル変数を宣言することができます。
お礼
leaz024さん ありがとうございます。 私の本の読み間違いです。 { }の中だと思ったのですが、関数〔サブルーチン)の中なんですね。 まだ初心者なのでいろいろ勘違い、等もしています。 今後ともよろしくお願いします。 なんか、よい本などあればご紹介していただけたら、ありがたいなと、思います。
お礼
leaz024 さん ありがとうございます。 参考書の紹介のお願いまでしてすみませんでした。 ご紹介いただいた、サイトは大変よいサイトでした。 ありがとうございます。