#!/usr/local/bin/perl $| = 1; $data_file = 'item.dat'; $query_ref = &get_query; $koumoku = $query_ref->{'koumoku'}; # koumokuの値チェック $koumoku = '' unless $koumoku =~ /^(2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19)$/; # データを読み出し、選択された項目でソート open DATA, $data_file; $line = 1; while () { ($id, @temp) = split /\t/; pop @temp; if ($line == 1) { @head = @temp; $line = 0; } else { $data_for_sort{$id} = $temp[$koumoku]; $data_set{$id} = [@temp]; } push @id_unsorted, $id; } close DATA; if ($koumoku == 19) { @id = sort { $data_for_sort{$b} cmp $data_for_sort{$a} } keys %data_for_sort; } elsif ($koumoku) { @id = sort { $data_for_sort{$b} <=> $data_for_sort{$a} } keys %data_for_sort; } else { @id = @id_unsorted; } # 以下、HTMLの出力 print <<"_HTML_"; Content-type: text/html Cross Hermit アイテム一覧 _HTML_ # テーブルのヘッダ部分を出力 $count = 0; foreach (@head) { if ($count == 0) { print qq(); foreach $item (@{$data_set{$id}}) { if ($koumoku and $count == $koumoku) { print qq(
$_); ++$count; } elsif ($count == 1) { print qq($_); ++$count; } else { print qq($_); ++$count; } } # テーブルの各項目を出力 foreach $id (@id) { $count = 0; if ($koumoku) { last unless $data_set{$id}[$koumoku]; # ソートする項目に値がなくなったらそれ以下は無視 } print qq(
$item); ++$count; } else { print qq($item); ++$count; } } print qq(\n); } print qq(
\n\n); # queryの取得サブルーチン sub get_query { my $name; my $value; my %query; my $query = $ENV{'QUERY_STRING'}; my @pairs = split /&/, $query; foreach (@pairs) { ($name, $value) = split /=/; $query{$name} = $value; } return \%query; }