reset

指定の名前のすべての変数をクリアする

構文

解説

reset は、EXPR に指定された 1 文字から始まる変数をクリアします。 対象は該当のパッケージ内の変数すべてです。 ただし、my で局所化された変数はクリアされず、何も影響を受けません。 reset は、対象の変数が文字列なら undef に、 配列なら空の配列に、ハッシュなら空のハッシュにします。

次のサンプルコードは、先頭が v で始まる変数をクリアします。

our $var1 = 'abc';
our @var2 = ( 1, 2, 3 );
our %var3 = { foo => 1, bar => 2 };

reset 'v';

print defined($var1) ? $var1 : 'undefined', "\n";    # undefined
print scalar(@var2), "\n";                           # 0 (空の配列)
print scalar( keys %var3 ), "\n";                    # 0 (空のハッシュ)

reset に 2 文字以上を引数に与えると、それぞれの文字を別々に解釈します。 たとえば、"ab" を引数に与えると、 先頭が a から始まる変数と、先頭が b から始まる変数が対象になります。

our $alpha = 'a';
our $beta  = 'b';

reset 'ab';

print defined($alpha) ? $alpha : 'undefined', "\n";    # undefined
print defined($beta)  ? $beta  : 'undefined', "\n";    # undefined

reset にはハイフンを使って文字の範囲を指定することもできます。 次のサンプルは、小文字アルファベットで始まる変数が対象になります。

our $alpha = 'a';
our $zeta  = 'z';

reset 'a-z';

print defined($alpha) ? $alpha : 'undefined', "\n";    # undefined
print defined($zeta)  ? $zeta  : 'undefined', "\n";    # undefined

ハイフンで文字の範囲を指定できると言っても、"A-Z" を指定するのはお勧めできません。 なぜなら、@ARGV@INC といった配列や %ENV といったハッシュまで一掃されてしまうからです。

reset の引数 EXPR を省略すると、正規表現 m?pattern? 検索をリセットします。

reset はよくループの最後の continue ブロックで使われます。