- ベストアンサー
grep中でデリファレンスするとエラー???
問題を突き止めるため、コードをここまで小さくしましたが、まだエラーが出ます・・・ use strict; $_ = [0, 1]; grep($_ == $$_[0], 0, 1) このコードはgrepの中で$_をデリファレンスしているだけです。 これを実行すると、 Can't use string ("0") as an ARRAY ref while "strict refs" in use というエラーになってしまいます。 ううむ、どこかでシンボリックリファレンスを使っているのでしょうか
- みんなの回答 (1)
- 専門家の回答
お礼
早速のご回答ありがとうございました! エラーの原因が分かりました。 これは私の思いこみによるエラーでした。 私はgrepの外側で設定した$_をgrepの中で参照しようとしましたが、 grep中では$_がgrep専用に局所化されてしまい、あらかじめセットした外側の$_は参照できないのですね。 grep($_ == $$_[0], 3, 4) 私の思いこみでは、この式の最初の$_はgrepがリストを次々に代入するために使う変数で、 次の$$_[0]はgrepの外側で設定した無名配列を参照しようとしているものです。 しかし、実際にはどちらもgrep用の$_なのだと気付かずに、悩んでいました。