• ベストアンサー

5.10が使えない環境でのstate変数

現在はじめてのperlという本を読みながら勉強を進めているのですが、永続的なプライベート変数という項目で、state変数がでてきました。そこでコードを書いて試してみようと思ったのですが、どうやら使用しているサーバー(さくらのレンタルサーバライトプラン)ではperlのヴァージョンが5.8.9のようでstate変数が使用できませんでした。このような場合、state変数に代わり何を使用すればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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)
回答No.1

機能が似ているmyを使う。

3104kita
質問者

補足

myではstateの動作を期待することができません。ourが似ているような気がするのですが、ourとstateは同じものと捉えていいのでしょうか…?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • boolean型ではなくて

    booleanの2つの値を取る変数ではなく、3つの値を取れる変数ってあるのでしょうか?booleanを2つ使用した場合もやってみたのですがうまく動きませんでした。先に次のようにbooleanを記述して。 boolean state=true; boolean state1=true; boolean state2=true; 後半部分で次のようにやってみたのですが、3値とったことにはならないですかね?(^^; if(state)     {      if(state1){buffer=img2;}      else{buffer=img3;}      if(state2){buffer=img4;} else{buffer=img5;}     } else{} g.drawImage(buffer,0,0,null); state1 = !state1; state2 = !state2;

    • ベストアンサー
    • Java
  • $_という変数は何を意味するのでしょう?

    Perlの勉強中ですが、 $_ という変数がperlの予約語だということだけは知りました。 ですが、この$_はどういった場面で使用されるものなのでしょうか? 例文を教えていただけますと助かります。

    • ベストアンサー
    • CGI
  • クライアントの環境変数値を得る。

    よろしくお願いします。 web上からCGIを実行したときに そのCGIを実行したクライアントの環境変数値を得ることは可能でしょうか? システム環境変数の「HOME」や「TEMP」の指定先を得たいのですが。 クライアント端末はWindows2000 or XP です。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl もしくは csh 開発端末・・・windows2000(Tera Term 使用)

    • ベストアンサー
    • CGI
  • 環境変数が突然読み込めなくなる不具合

    質問させていただきます。 現在CentOS5.4を使用しておりますが高負荷になったタイミングでサーバにログインするとsu - ユーザ名とすると環境変数が全く読み込めない状態になりスイッチユーザができないことがあります。 ちなみにハイフン付きでもrootでのログインは可能です。 高負荷になったタイミングで環境変数が読めなくなることがあるのか、 またあるとしたら原因はどの辺にあるかを知りたいです。 まったく同じ構成の別サーバではこの現象が起こっておりません。

  • use スカラー変数とするには・・・

    初心者PERLプログラマーです。 独学で身の回りにPERL仲間がいないため、質問させてください。 スカラー変数を使用してモジュールをuseしたいのですが、どうしてもできません。調べてみましたが検索力の無さからか見つからず… 現在のコードをはしょって書きます ----------------------- my $a = "Hoge"; use $a; my $b = new $a(); $b->run; ----------------------- $aの部分を変数にせず、use Hoge;と書くとうごくので、変数にしたことによるエラーだと思います。 $aを"$a"としてみたりしてもダメでした。 わかるかたご教授いただければ幸いです。

    • ベストアンサー
    • Perl
  • ブラウザの環境変数の確認方法

    プロキシのことを勉強しようと思っています。 プロキシを使った場合にIPアドレスなどの情報が確かに隠せているかをチェックするためには まずはブラウザから読み取ることができる環境変数を見ればいいだろうと思いました。 そういうわけですので、この環境変数の確認方法を教えて下さい。 OS は debian 7.8 です。 ググッてみると解説ページはいくらでもあるようですが、例えば http://www.perl-labo.org/analyse/useragent/ の最初の方にはユーザーエージェントを画面に表示するCGIプログラムが掲載されています。 しかし、これだとレンタルサーバー上にこのCGIプログラムを設置して、 そのサイトにブラウザからアクセス、という手順を踏まなければいけません。 レンタルサーバーなどを持っていなくても、 自分で自分の環境変数を確認する方法はないでしょうか? Konqueror でこのスクリプトファイルの場所にアクセスしてもファイルの中身が表示されるだけですし。 自分のPCにおいて自分のみアクセスできるサーバーを立ち上げて そこにブラウザからアクセスする、なんていうやり方がありそうですが、 他にはないでしょうか? どうぞよろしくお願いいたします。

  • マイコンのステート数

    こんばんわ。今、マイコンを勉強しています。 使用しているマイコンはATC-80ZIIです。 マイコンでプログラムを組んで実行した時にかかる時間(実行時間)を計算で求める方法を調べています。実行時間を求める方法はステート数にクロック周期(クロック周波数の逆数)をかけるという事は知っているのですが、各命令に対してかかるステート数がわかりません。例えば00HをAレジスタに転送する場合、(LD A,00H)のステート数は7らしいです。本に載っていると思って調べてみたんですが見つからなかったのでここに質問しました。どこかに表とかに一覧で載っていないでしょうか? よろしくお願いします。

  • セッション変数について

    48歳独学でプログラムを勉強しているものです。誰も教えてくれる人がいないので、教えてgooさんには大変お世話になっております。 現在PHPを使用して無料レンタルサーバーに会員画面を作ろうとしているのですが、一般的に無料レンタルサーバーでもセッション変数は使えるものなのでしょうか。どうも上手くセッション変数がフォルダに保存されません。無料レンタルサーバーでは不可なのでしょうか。 セッション保存先に「kaiintmp」というフォルダを作成しています。 そして、 session_start(); session_save_path("kaiintmp"); session_register("simei","pass"); $_SESSION[simei]=$simei; $_SESSION[pass]=$pass; のようにしていますが・・・。 自分のパソコンでは、セッション変数が作成されますがレンタルサーバーにUPしても作成されません。 レンタルサーバーにUPしたときのpathがダメなのでしょうか? レンタルサーバーでセッション変数を使用されている方おりましたら宜しくご教授お願いいたします。

    • ベストアンサー
    • PHP
  • サーバー環境変更に伴う注意点

    hiroshi_sです。 現在、WindowsNT -> Windows Server2003へ サーバーを変更しようと思っています。 サーバーを変更する際に、注意点があれば ご教授よろしくお願いします。  -サポートされるPerlのバージョン  -サーバー変更に伴うPerlの機能の変化 現在ActivePerl 5.6.1.630を利用しています。 もしActivePerlのバージョンも変更する必要が あるのであれば、その際の注意点もかさねて ご教授願います

    • ベストアンサー
    • Perl
  • 環境変数がおかしいのでしょうか?

    現在家のパソコンを使いJavaの勉強をしております。 家で使用しているパソコンとは違うのにj2sdk1.4.2_01をインストールして勉強しようと考えていました。 それで、J2SDK1.4.2_01をインストールしてユーザーの環境変数に以下のようなものを新規で作りました。 JAVA_HOME C:\j2sdk1.4.2_01 PATH %JAVA_HOME%\bin CLASSPATH .;%JAVA_HOME%\lib\tools.jar それで家で作ったjavaファイル、classファイルをインストールしたパソコンにコピーしました。 実際に正しく設定されているか確認するため、javaファイルのあるディレクトリに移動し javac Sample.java (作ったjavaファイルをSample.javaとした場合) とコマンドしたところ 「'javac'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」 と表示されました。 家のパソコンと同じようにしたのにおかしいと思い、一応classファイルもコピーしたので java Sample とタイプし実行してみました。 そうすると実行はできたんです。 なぜコンパイルはできなかったんでしょうか? 環境変数の設定がおかしいのでしょうか?

    • ベストアンサー
    • Java
iMac G5との接続に問題があります
このQ&Aのポイント
  • iMac G5のバージョンが10.4.11ではセットアップができません
  • セットアップCD-ROMも開けない状況です
  • 他のパソコンとの接続方法を教えてください
回答を見る