最新閲覧日:

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

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

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

あれば、教えてください。お願いします。

A 回答 (4件)

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



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

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

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

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

また補足ですが、my変数はresetの影響を受けません。グローバル変数とlocal変数のみに有効です。
    • good
    • 0

punchan_jp さんもおっしゃっていますが、


Perl には、かなりの数の「予約変数」があり
無作為に全変数の初期化ができてしまうと、
プログラムが「全く」動かなくなります。

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

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

しかないと思います。
    • good
    • 0

こんにちわ。


変数全てを初期化する方法は無かったと思います。もし、そのような方法を希望されているのであれば、連想配列を利用することで実現できると思います。(最初は、確かundefで既に初期化されていると思いました)

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

初期化したい場合には、
%DAT = ();
とすることで出来ると思います。
    • good
    • 0

Perlは起動時から値の入った変数や擬似変数があり、


それらに無理に変な値を入れると動作が変わってしまいます。
というわけで、そういう機能はないと思います。

でも、なんのために?

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

この回答への補足

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

補足日時:2001/04/20 11:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


おすすめ情報