state

永続的なレキシカル変数を宣言する

構文

解説

state はレキシカルスコープ変数を宣言します。この点は my と同じです。 しかし、state で宣言された変数は同じスコープ内で再宣言することはできません。 この点が my との大きな違いです。 詳細は perlsub の "Persistent Private Variables" をご覧ください。

state"state" feature が有効の場合で利用可能です。または、CORE:: を前置しても利用可能です。 "state" feature は現在のスコープで use v5.10 (またはそれ以上のバージョン) とすることで自動的に利用できるようになります。

use feature 'state';
state $name = 'Taro';

"state" feature を使わずに CORE:: を前置する場合は次の通りです。

CORE::state $name = 'Taro';

次のように同じスコープで state を使って変数を再宣言するとエラーになります。

use feature 'state';
state $name = 'Taro';
state $name = 'Jiro';    # my とは違い、同じスコープで再宣言するとエラーになる