あるstatusが数字で定義してあって、その数字に対応する単語でそれぞれのstatusを置き換えたいとき

htmlなどで、statusをコトバで表示させたいときに便利なやり方を先輩がしていたので、メモ。

■ポイント
グローバル変数で置き換えるコトバを配列にしておくこと
※要素番号がstatusと等しくなるように

こんな対応のstatusが定義されているとします。

status=0は「申請中」
status=1は「承認OK」
status=2は「承認NG」

コトバで置き換える処理は以下。

my @status = ('申請中','OK','NG'); #グローバル変数で置き換える単語を配列で作る
{
	my $res = DBからデータを取ってきます。(statusも数字で返ってくる。)

	#$resはこんな構造とします。
	#$res = {
	#	sites => [
	#		{id =>1, status => 1, site_name => 'hoho'},
	#		{id =>2, status => 0, site_name => 'gege'},
	#		{id =>3, status => 2, site_name => 'bibi'},
	#		{id =>4, status => 2, site_name => 'wawa'},
	#		{id =>5, status => 1, site_name => 'jojo'},
	#	]
	#}

	foreach (@{$res->{sites}}){
		$_->{status} = $status[$_->{status}];
	}
	$res;
}

こうすると、戻り値の$resはこんな形になってます。

$res = {
	sites => [
		{id =>1, status => '承認OK', site_name => 'hoho'},
		{id =>2, status => '申請中', site_name => 'gege'},
		{id =>3, status => '承認NG', site_name => 'bibi'},
		{id =>4, status => '承認NG', site_name => 'wawa'},
		{id =>5, status => '承認OK', site_name => 'jojo'},
	]
}

私は、思いつきもしませんでした〜。