〜〜 2006061007, 44, 48, 57, 51, 57, 39, 61, 65, 71, 83, 83, 72, 2006061105, 46, 39, 56, 57, 61, 67, 65, 63, 73, 75, 91, 76, 2006061107, 52, 54, 50,, 53, 68, 65, 72, 54, 81, 87, 76,上の例では、セパレータとして , ( カンマ )だけが使われている。
my %rlv ; # ハッシュにデータを取り込む。
my $filename = 'F:/data/rlevel.dat' ; # ファイルを指定
open DAT, $filename or die "?? $filename ??:$!\n" ; # ファイルを開く
while ( <DAT> ) {
chomp ; # 行末の改行をカット
next unless /^\d+/ ; # 行頭が数字でなければ次の行へ
my @hr = split /,/ ; # セパレータで区切って配列に変換
# 複数の場合は split /,|:|;/ など
my $ky = shift @hr ; # 配列の最初の項をキーにして
$rlv{ $ky } = [ '', @hr ] ; # 後で使うときのために、0 番目を追加して
# 配列のリファレンスをハッシュに保存する
}
close DAT ;
これで、年月日・場コードをキーにしたハッシュが出来た。
# $rlv{ $hr[0] } = [ @hr ] ; # キーごとハッシュに保存も一つの方法
では、保存する必要がない無駄な部分があるので、上と差替えました。
my $rid = '2006061107' ;
my $rn = 9 ;
my $rlevel = $rlv{$rid}[$rn] ;
年月日・場コードとレースナンバーが分かればこのように該当するデータを