コンテキストによって返す値を変える関数 - use Want 編
リストコンテキストかどうかは組み込み関数の wantarray で調べられますが、コンテキストによってスカラ(文字列)を返したり、ハッシュのリファレンスを返すには use Want すればいいと教えてもらったのでメモ。
my $server = OrenoServer->new(...); # want scalar say $server->archetyp; say "this server is ", $server->archetyp eq "core" ? "" : "not ", "core"; my $h = $server->archetyp; print Dumper $h; # want hash ref say "this server is ", $server->archetyp->{mysql} ? "" : "not ", "mysql"; my %h = %{ $server->archetyp }; print Dumper \%h; exit; package OrenoServer; use Want; # ... sub archetyp { # ... my $at = [ core => "co1", webapp => "ap103" ]; # test data push @$at, (q4m => "qu101"); if (want(qw(HASH))) { return {@$at}; } else { return $at->[0]; } }