Mail de Babyu-n GPS (C)かいちょ
#!/usr/bin/perlメインカテゴリとサブカテゴリを表示するというスクリプトなのだが、以下のような結果を期待していた。
$TEST{'STR'} = 'PC';
$TEST{'STR'}{'1'} = 'STR-1 values.';
$TEST{'VAL'} = 2;
$TEST{'VAL'}{'2'} = 'VAL-2 values.';
$TEST{'DAT'} = "テスト";
$TEST{'DAT'}{'3'} = 'DAT-3 values.';
td();
sub td {
foreach $mk (keys %TEST) {
print ">$mk\n";
foreach $sk (keys %{$TEST{$mk}}) { print "> $sk: $TEST{$mk}{$sk}\n"; }
}
return undef;
}
>>>STRしかし結果はあまりにも無惨で以下のような結果となった。
>1: STR-1 values.
>>>VAL
>2: VAL-2 values.
>>>DAT
>3: DAT-3 values.
>>>STR連想配列名 "STR" のサブ連想配列が出てこないのだ。
>>>VAL
>2: VAL-2 values.
>>>DAT
>3: DAT-3 values.
# まずはつっこみの新しい順にグループ化したターゲット番号を 10個拾う my $mysql_query = "SELECT target FROM tsukkomi GROUP BY target ORDER BY lastupdate DESC LIMIT 0,10"; my $mysql_sth = execute_query($mysql_db, $mysql_query); my @TARGET_LIST; while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) { push(@TARGET_LIST, $TMP_HASH->{target}); } $mysql_sth->finish; # 次にそのターゲット番号の記事タイトルを取る $mysql_query = join(', ', @TARGET_LIST); $mysql_query = "SELECT num,title FROM diary WHERE num IN ($mysql_query)"; my $mysql_sth = execute_query($mysql_db, $mysql_query); my %TITLE_LIST; while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) { $TITLE_LIST{$TMP_HASH->{num}} = $TMP_HASH->{title}; } $mysql_sth->finish; # 最後に配列として保存。連想配列にしてしまうと順序がわからなくなる。(汗) my @RET_LIST; foreach (@TARGET_LIST) { push(@RET_LIST, "$_<>$TITLE_LIST{$_}"); } # 最後の締め。 $mysql_db->disconnect; return @RET_LIST; |
s/("|'|\\)/\\$1/g;ちなみにこの変換用ルーチンをブロック単位で作っているが、フォームデータをそのまま利用する場合もあるので get_formdata() にそのまま放り込むわけにも行かず。
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ 山銀
└ G兄