perlのstateキーワード
そんなものがあるなんて今日初めて知った。
perlを3年近く業務で使っておきながら、
「初めてのPerl」を未読だからこんな事に・・・
変数にstateキーワードをつけると、変数に永続性が付与される。
CとかJavaで言うところのstatic的な感じ。
サンプルのソースコード↓
#!/usr/bin/perl use 5.010; use strict; use warnings; sub greet { my $current = shift; state $last = ""; if ($last eq "") { print "Hi $current! You are the first one here!\n"; } else { print "Hi $current! $last is also here!\n"; } $last = $current; } greet("Fred"); greet("Barney"); =pod # 結果 Hi Fred! You are the first one here! Hi Barney! Fred is also here! =cut
ポイントとしては、use 5.010;を使うこと。
使わないとsyntax errorが発生する。
Global symbol "$last" requires explicit package name at ex04-4.pl line 7.
いまいち使いドコロが思いつかないけど、
そんなのもあるんだなーくらいに覚えておこう。