• ベストアンサー

全ての変数を初期化する方法はありませんか。

perl で、途中で、全ての変数を初期化(からっぽ)にする方法はありませんか。 一つ一つ、代入する方法ではなく。 例えば、 $first = ""; $second = ""; $third = ""; ではなく。 一気に全ての変数を初期化する方法。 変数名が分からなくても全て初期化できる方法。 もしくは、代替手段など。 あれば、教えてください。お願いします。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

使用が推奨されていない関数ですが、resetという関数で、一度に多数の変数の値をクリアすることが出来ます。 書式は次の通りです。     reset EXPR ここでEXPRは文字を列挙したもの(ハイフンによる範囲指定も可)で、ここに含まれた文字で始まる全てのスカラー変数、配列、ハッシュのを初期状態に戻します。 例えば、小文字で始まる全ての変数を初期化するには、次のようにします。     reset 'a-z'; ただし他の方もおっしゃられている通り、PerlにはARGV,INC,ENVなど、予め値が入っている変数もあるので、     reset 'A-Z'; はやめましょう。 また補足ですが、my変数はresetの影響を受けません。グローバル変数とlocal変数のみに有効です。

その他の回答 (3)

  • 2nd
  • ベストアンサー率30% (19/63)
回答No.3

punchan_jp さんもおっしゃっていますが、 Perl には、かなりの数の「予約変数」があり 無作為に全変数の初期化ができてしまうと、 プログラムが「全く」動かなくなります。 ので、 「プログラム中で使用している (非予約)変数全てに NULL値を代入する」 という操作を実現するには、bagyo さんのおっしゃるように プログラム中で使用する(非予約)変数を全て 一つの(or 管理できる範囲の個数の)連想配列で定義し、 その連想配列を初期化する。 しかないと思います。

  • bagyo
  • ベストアンサー率40% (16/40)
回答No.2

こんにちわ。 変数全てを初期化する方法は無かったと思います。もし、そのような方法を希望されているのであれば、連想配列を利用することで実現できると思います。(最初は、確かundefで既に初期化されていると思いました) $DAT{"first"},$DAT{"second"},$DAT{"third"}等 初期化したい場合には、 %DAT = (); とすることで出来ると思います。

回答No.1

Perlは起動時から値の入った変数や擬似変数があり、 それらに無理に変な値を入れると動作が変わってしまいます。 というわけで、そういう機能はないと思います。 でも、なんのために? 再起動というか自分自身を exec するとかしかないと思いますが、 それでも最初から値の入った変数は別ですが。

defd
質問者

補足

変数を全部、からっぽにした後に、再定義したいのですけど、 それ以外(再定義しない変数)については、からっぽ($hoge = "";)にしたいのです。

専門家に質問してみよう