ハッシュを配列で初期化する
はい、おそらく当たり前の事です。でも、私は知らなかったんですよ。。。
ということで、私の中での"ハッシュの初期化"です。
keyとvalueをアロー演算子で紐付けます。見やすいです。
my %mon_hash = (
Jan => 0, Feb => 1, Mar => 2, Apr => 3,
May => 4, Jun => 5, Jul => 6, Aug => 7,
Sep => 8, Oct => 9, Nov => 10, Dec => 11
);
で、何気に perldata 見て気づいたのが以下
,(カンマ)区切りで配列だ。。。
ハッシュはキーと値と解釈される値のペアとなるリストリテラルを使って初期化されます:# same as map assignment above
%map = ('red',0x00f,'blue',0x0f0,'green',0xf00);
個人的には衝撃を受けました。まずは付属のpodをちゃんと読まないとダメだ〜。
とか
my $mon_str = 'Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11';
my %mon_hash = split /\s+/, $mon_str;
とか
my @mon_array = ('Jan',0,'Feb',1,'Mar',2,'Apr',3,'May',4,'Jun',5,'Jul',6,'Aug',7,'Sep',8,'Oct',9,'Nov',10,'Dec',11);
my %mon_hash = @mon_array;
とできるのですか〜
my %mon_hash = qw/Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11/;
私はperlに触れて何年目?