Perlでデータ構造

クックブックとラクダ本で勉強中。「配列の配列」と「配列のハッシュ」を勉強した。

配列の配列

Javaとかで言う2次元配列とか。記法が違うだけでそんなに変わらん。

配列のハッシュ

一つのキーに対して、複数の値を対応させたい時に使う。例にこういうデータ構造を表示させるようにしてみる。

yoshid50:r java perl
miyaga50:python r
satou30:php css java

これを配列のハッシュで表示させてみる。

use strict;
use warnings;

open FILE, "prog.txt" or die "can't open prog.txt $!";
my %HoA = ();

while(my $line = <FILE>){
    my ($who, $prog) = split /:\s*/, $line, 2;#2つにsplitしてくれ
    my @prog = split ' ', $prog;
    $HoA{$who} = [@prog];
}

for my $who(keys %HoA){
    print "$whoが使える言語は";
    for my $i(0..$#{$HoA{$who}}-1){
	print "$HoA{$who}[$i]と";
    }
    print "$HoA{$who}[$#{$HoA{$who}}]です。\n";
}

結果はこちら。

miyaga50が使える言語はpythonとrです。
yoshid50が使える言語はrとjavaとperlです。
satou30が使える言語はphpとcssとjavaです。

ほとんどラクダ本を参考にしてる。