下記をmmc.cgiなどの名前でセーブして使用してください。 HTTP:Liteを使用していますので最新版をCPANから取得して入れてください。 http://****.net/mmc.cgi/lumi のようにして使うことを想定しています。 PATH_INFO から町の名前を取得していますが、この部分は、ご利用になる サーバーによって動作が異なるので調整の必要がある場合があります。 サーバーの設定をいじれる人は .htaccess を使用して http://mmc.****.net/lumi のような形でこれを呼び出せるようにすると楽です。 記述例(mmc.****.net のトップの.htaccessに書いておく) Redirect permanent / http://****.net/mmc.cgi/ getbestは個人的な好みが入っています。-2, -3 などを使わずに 単純比較したほうが、もしかしたら良いのかも知れません。 このスクリプトではcomが選択されません。comの使い方については 現在研究中です。 このスクリプトを使用した結果に関して著者は一切責任を持ちません。 改造はご自由にどうぞ。 質問にはお答えできません。 Lumi ----------------------- #!/usr/bin/perl use HTTP::Lite; my $cr = "\n"; my $town = substr($ENV{PATH_INFO},1); my $command = &selcommand($town); my $url = qq!http://$town.myminicity.com/! . $command; print 'Location: ',$url,$cr; print $cr; exit(0); sub selcommand{ my ($town) = @_; my $url = qq!http://$town.myminicity.com/xml!; $http = new HTTP::Lite; eval {$req = $http->request($url);}; if ($@) { return ''; } my %tbl=(); my $buf = $http->body(); &getxml($buf, \%tbl); return &getbest(\%tbl); } sub getxml{ my ($buf, $ref) = @_; my @tags=(); while($buf =~ /((<(\w+)[^>]*>([^<>]+?)<\/\3>)|(<(\w+)[^>]*\/>))/gics){ my $tag = $2; my $tid = $3; my $val = $4; if ($tag eq ''){ $tag = $5; $tid = $6; } push(@tags, $tag); $$ref{$tid} = $val; } pos $buf = 0; foreach(@tags){ my $ww = $_; /<(\w+)/; my $tid = $1; while($ww =~ /(\w+)="(\w+)"/gics){ $$ref{$tid . '-' . $1} = $2; } pos $ww=0; } $$ref{host} =~ /^(.+)\.myminicity/; $$ref{name2} = $1; } sub getbest{ my ($ref) =@_; my $unemp = $$ref{unemployment}; my $tra = $$ref{transport}; my $crim = $$ref{criminality}; my $pol = $$ref{pollution}; $tra = 100 - $tra; if ($pol==0 && $crim==0 && $tra==0 && $unemp==0){ return ''; #pop } if ($pol>0 && $pol>$unemp && $pol>$tra-3 && $pol>$crim){ return 'env'; } if ($crim>0 && $crim>=$unemp && $crim>=$tra-3){ return 'sec'; } if ($unemp>0 && $unemp>=$tra-2){ return 'ind'; } if ($tra>0){ return 'tra'; } return ''; # for safety }