-PR-
解決済み

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

  • すぐに回答を!
  • 質問No.65973
  • 閲覧数1811
  • ありがとう数0
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 19% (11/56)

perl で、途中で、全ての変数を初期化(からっぽ)にする方法はありませんか。

一つ一つ、代入する方法ではなく。
例えば、
$first = "";
$second = "";
$third = "";
ではなく。

一気に全ての変数を初期化する方法。
変数名が分からなくても全て初期化できる方法。
もしくは、代替手段など。

あれば、教えてください。お願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル12

ベストアンサー率 75% (398/526)

使用が推奨されていない関数ですが、resetという関数で、一度に多数の変数の値をクリアすることが出来ます。

書式は次の通りです。
    reset EXPR

ここでEXPRは文字を列挙したもの(ハイフンによる範囲指定も可)で、ここに含まれた文字で始まる全てのスカラー変数、配列、ハッシュのを初期状態に戻します。

例えば、小文字で始まる全ての変数を初期化するには、次のようにします。
    reset 'a-z';

ただし他の方もおっしゃられている通り、PerlにはARGV,INC,ENVなど、予め値が入っている変数もあるので、
    reset 'A-Z';
はやめましょう。

また補足ですが、my変数はresetの影響を受けません。グローバル変数とlocal変数のみに有効です。
関連するQ&A
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.3
レベル8

ベストアンサー率 30% (19/63)

punchan_jp さんもおっしゃっていますが、 Perl には、かなりの数の「予約変数」があり 無作為に全変数の初期化ができてしまうと、 プログラムが「全く」動かなくなります。 ので、 「プログラム中で使用している (非予約)変数全てに NULL値を代入する」 という操作を実現するには、bagyo さんのおっしゃるように プログラム中で使用する(非予 ...続きを読む
punchan_jp さんもおっしゃっていますが、
Perl には、かなりの数の「予約変数」があり
無作為に全変数の初期化ができてしまうと、
プログラムが「全く」動かなくなります。

ので、
「プログラム中で使用している
(非予約)変数全てに NULL値を代入する」
という操作を実現するには、bagyo さんのおっしゃるように

プログラム中で使用する(非予約)変数を全て
一つの(or 管理できる範囲の個数の)連想配列で定義し、
その連想配列を初期化する。

しかないと思います。


  • 回答No.2
レベル8

ベストアンサー率 40% (16/40)

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

$DAT{"first"},$DAT{"second"},$DAT{"third"}等

初期化したい場合には、
%DAT = ();
とすることで出来ると思います。
  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

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

でも、なんのために?

再起動というか自分自身を exec するとかしかないと思いますが、
それでも最初から値の入った変数は別ですが。
補足コメント
defd

お礼率 19% (11/56)

変数を全部、からっぽにした後に、再定義したいのですけど、
それ以外(再定義しない変数)については、からっぽ($hoge = "";)にしたいのです。
投稿日時 - 2001-04-20 11:21:21
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ