- ベストアンサー
5.10が使えない環境でのstate変数
現在はじめてのperlという本を読みながら勉強を進めているのですが、永続的なプライベート変数という項目で、state変数がでてきました。そこでコードを書いて試してみようと思ったのですが、どうやら使用しているサーバー(さくらのレンタルサーバライトプラン)ではperlのヴァージョンが5.8.9のようでstate変数が使用できませんでした。このような場合、state変数に代わり何を使用すればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
機能的にはクロージャを使えばできますが、state 変数そのものずはりというのはないかもしれません。 # 表示がずれるので、半角スペースを全角にしていることに注意 use strict; use warnings; my %test_name; $test_name{'my'} = "func_my"; sub func_my { my $num = 0; $num += 10; print "$num\n"; } $test_name{'closure'} = '$closure_ref'; my $closure_ref; { my $num = 0; $closure_ref = sub { $num += 10; print "$num\n"; } } $test_name{'num'} = '$num'; my $num = 0; $num += 10; print $test_name{'my'}, "\n"; func_my(); # 10 func_my(); # 10 print "\n", $test_name{'closure'}, "\n"; $closure_ref->(); # 10 $closure_ref->(); # 20 print "\n", $test_name{'num'}, "\n"; print $num, "\n"; # 10 print $num, "\n"; # 10
その他の回答 (1)
- taporu
- ベストアンサー率44% (46/104)
機能が似ているmyを使う。
補足
myではstateの動作を期待することができません。ourが似ているような気がするのですが、ourとstateは同じものと捉えていいのでしょうか…?