Perlで配列の要素をキーとバリューに持ったハッシュを作る

2009年01月21日(水) 12:34 この記事をクリップ!

いやー、単にある値が配列の要素に存在するかをテンプレートでチェックしたかっただけなんですが。

配列に値が含まれるかどうかは、 TemplateToolkitのVirtualMethodであるgrepでもできるようだけど、諸事情によりハッシュを使ったメモを残す。

配列に特定の要素が含まれるか確認する

Pythonでリストやタプルや辞書のキーで要素が取得できるかを確認するのは、 in を使えばいいです(ただし、辞書からNoneが返ると…)。

l = (1,2,3,4,5,)
if 4 in l:
  print 'exist!'

Perl講座 によると、Perlで配列に特定の要素が含まれているかを確認するのは次のようにすればいいそうなんですが、よくわかりません :)

文字の場合:

@array = qw/rhythm factory express biztech/;
%tmp;
for ( @array ) { $tmp{$_} = 1 }

小さな数値の場合:

@array = (1, 2, 4, 8, 16, 32);
@tmp;
for ( @array ) { $tmp[$_] = 1; }

配列からハッシュを作る

今回は、TemplateToolkitのVirtualMethodのexistsが使いたいだけなので、配列の要素をキーとバリューに設定したハッシュを作ります。

my @l = [1,2,3,4,5];
my %l;
@l{@l} = ();

意味が分かりません><

配列と同名のハッシュを定義して、配列に配列に…? なぜか%lが設定済みになります。コンテキストが云々と説明してもらったけど、脳みそがスルーした :)

Perlむずいなー


 
ponybadge

Powered by

Feedbacks

Tweets

Tags

Calendar