はじめに
以前、perlのリスト(配列)の基本について書きました。(hashについては書いてないかも)
上記の記事とはあまり関係ないですし今更間はありますが、
今回はリストとhashの使い方(主にgrepやmap)についてメモ
参考
こちらも参考に
あじぇんだ
1. 配列からkey=>1のhashに変換(map)
ソース
my @array = qw/hoge foga piyo/; my %hash = map { $_ => 1 } @array; say Dumper \%hash;
結果
# perl grep_map_sample.pl $VAR1 = { 'piyo' => 1, 'foga' => 1, 'hoge' => 1 };
2. リストからユニークな値の取得①(grep)
ソース
my @array = qw/hoge foga piyo hoge hoge muga/; my %tmp; my @unique = grep { !$tmp{$_}++ } @array; say Dumper \@unique;
結果
$VAR1 = [ 'hoge', 'foga', 'piyo', 'muga' ];
3. リストからユニークな値の取得②(map)
ソース
my @array = qw/hoge foga piyo hoge hoge muga/; my @unique = keys{map { $_ => 1 } @array}; say Dumper \@unique;
結果
$VAR1 = [ 'piyo', 'muga', 'hoge', 'foga' ];
4. 2つの配列をマッピングしてhashに変換(map)
これはハッシュスライス使ってやることもできますが、mapでやります。
ソース
my @keys = ("name", "age", "sex"); my @values = ("hoge", 20, 1); my %hash = map { $keys[$_] => $values[$_] } (0..$#keys); warn Dumper \%hash;
結果
$VAR1 = { 'name' => 'hoge', 'age' => 20, 'sex' => 1 };
まとめ
perlのハッシュやリストは使い方によって結構すっきりかけるところがいいですよね!
初めてのPerl 第6版
posted with amazlet at 14.09.15