ネットランキングに使う Perl スクリプトを書きました。
作ったiアプリにネットランキングの機能をつけたいなぁと思ったとき、検索しても簡単に使えそうなスクリプトが見つからなかったので、Perlのクラスの書き方の勉強ついでに書いてみました。
といっても、いつものごとく最低限の機能しかありませんので、Perlの勉強とか面倒だけど、とりあえずネットランキングを使いたいんだ!という方くらいにしか需要はないかもしれません。
このスクリプトの使い方。
新規にネットランキングに登録する場合は↓こんな感じです。
#!/usr/local/bin/perl use NetRanking::Manager; use NetRanking::User; # データ受け取り my $data; read(STDIN, $data, $ENV{'CONTENT_LENGTH'}); # ゲーム識別番号&スコア&名前 # こんな感じで&で区切られたデータとします。 my ($game,$score,$name) = split(/&/, $data); # ランキング管理クラス my $ranking = new NetRanking::Manager($game); # ランキングのデータを読み出します。 $ranking->read_file; # 送られてきたデータを格納します。 my $newuser = new NetRanking::User($name,$score); # 登録します。(順位を0から始まる数値で返すので 1 を足してます。) my $rank = $ranking->entry($newuser) + 1; # 全体の登録者数取得します。 my $entries = $ranking->get_entries; # 表示形式は適当に変更してください。 print "あなたは全登録者$entries人中$rank位の成績でした。"; # 現在のランキングを保存します。 $ranking->write_file;
ネットランキングのデータを閲覧する場合は↓こんな感じです。
#!/usr/local/bin/perl use NetRanking::Manager; use NetRanking::User; # 0番目のデータを読み込みます。 my $game = 0; # ランキング管理クラス my $ranking = new NetRanking::Manager($game); # 10位から50位までの順位をファイルから読み込みます。 # この関数は読み込めた数を返すので取得しておきます。 my $min = 10-1, my $max = 50; $max = $ranking->create_data_from_file($min,$max); for(my $i = 0; $i < $max; ++$i){ my $user = $ranking->get($i); # $user->{name}で名前、$user->{score}でスコアを取得します。 # 表示形式は適当に変更してください。 printf("%3d位 %10s %10d", ($min+$i+1), $user->{name}, $user->{score}); }