blog/content/post/2009-07-18-00001200.md

27 KiB

title author date url wordtwit_post_info categories
これまでの応用(PerlからDBにアクセスして、ウェブサービスをたたく) kazu634 2009-07-18 /2009/07/18/_1299/
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4719;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
mysql
Perl

というわけで、これまでの応用ということで、Perlからデータベースにアクセスし、ウェブサービスを叩いてみます。

Perlのソース

# === Libraries ===
use strict;
use warnings;
use Data::Dumper;
use DBI;
use WebService::Simple;
# === 変数の宣言 ===
my @addr;
# === データベースからデータの読み込み ===
# データベースへの接続
my $dbh = DBI->connect( 'dbi:mysql:dbname=sample', 'root', 'musashi' );
# ステートメントハンドラの作成(=SQLをここで指定する)
my $sth = $dbh->prepare("SELECT ADDRESS FROM renoir");
# ステートメントハンドラの実行(=SQLの実行)
$sth->execute();
# ここでデータを取り出し、表示させる
while ( my @row = $sth->fetchrow_array ) {
push( @addr, $row[] );
}
# ステートメントハンドラの解放
$sth->finish;
# データベースハンドラの解放
$dbh->disconnect;
# === 経度・緯度情報の取得 ===
# ウェブサービスにアクセスするための準備
my $geocode = WebService::Simple->new(
base_url => "http://maps.google.com/maps/geo",
param    => {
output => 'xml',
hl     => 'ja',
ie     => 'UTF8',
oe     => 'UTF8',
}
);
foreach my $tmp (@addr) {
# レスポンスの取得
my $response = $geocode->get( { q => $tmp, } );
print("$tmp\n");
# レスポンスの解析・表示
if ( $response->parse_response()->{Response}->{Status}->{code} == 200 ) {
print $response->parse_response()->{Response}->{Placemark}->{Point}
->{coordinates};
}
else {
print 'Not Found, Not Found';
}
print("\n\n");
}

結果

kazu634@kazu634-laptop% perl db001.pl                         ~/prog/perl [320]
東京都豊島区東池袋1-40-2
139.7138439,35.7320865,
東京都豊島区東池袋1-42-8
139.7128801,35.7321420,
東京都豊島区巣鴨1-15-1
139.7398948,35.7331675,
東京都文京区本郷4-37-13
139.7599332,35.7080096,
東京都品川区大崎1-6-4
139.7293858,35.6197692,
東京都中野区中野5-61-2
139.6663186,35.7067903,
東京都中野区中野5-67-5
139.6653381,35.7081818,
東京都中央区銀座2-7-18
139.7675810,35.6733528,
東京都中央区銀座2-5-5
139.7669699,35.6739055,
東京都中央区銀座2-8-15
139.7676699,35.6727390,
東京都中央区銀座2-11-6
139.7690560,35.6723169,
東京都中央区銀座3-3-11
139.7652145,35.6727445,
東京都中央区銀座6-12-10
139.7642480,35.6688283,
東京都中央区銀座5-15-1
139.7676728,35.6685117,
東京都中央区日本橋2-3-6
139.7726638,35.6814104,
東京都中央区日本橋本町1-1
139.7762885,35.6852072,
東京都中央区八重洲1-6-17
139.7699945,35.6813936,
東京都中央区八重洲1-7-4
139.7702779,35.6810853,
東京都大田区大森北1-1-10
139.7292928,35.5889452,
東京都大田区西蒲田8-1-7
139.7148402,35.5612929,
東京都台東区上野6-1-1
139.7760349,35.7078879,
東京都台東区上野4-10-7
139.7743599,35.7109514,
東京都台東区上野2-13-13
139.7731878,35.7100098,
東京都台東区谷中7-20-6
139.7689179,35.7276245,
東京都千代田区五番町
139.7361271,35.6903637,
東京都千代田区富士見2-2-6
139.7452177,35.6992491,
東京都千代田区三崎町3-6-13
139.7515561,35.7017628,
東京都千代田区内神田2-9-9
139.7685749,35.6910813,
東京都千代田区内神田3-21-8
139.7706636,35.6927284,
東京都千代田区鍛冶町2-1-4
139.7712053,35.6912064,
東京都千代田区有楽町1-6-1
139.7604648,35.6738081,
東京都千代田区外神田1-16-10
139.7726883,35.6973334,
東京都千代田区外神田1-11-6
139.7710245,35.6995304,
東京都千代田区神田佐久間町1-18
139.7747021,35.6978834,
東京都杉並区阿佐ヶ谷南2-14-10
Not Found, Not Found
東京都杉並区高円寺北2-4-4
139.6505642,35.7058512,
東京都新宿区西新宿1-24-1
139.6958309,35.6903875,
東京都新宿区西新宿1-17-1
139.6982473,35.6893044,
東京都新宿区西新宿1-5-11
139.6981833,35.6927540,
東京都新宿区西新宿7-23-2
139.6943865,35.6943759,
東京都新宿区新宿2-19-1
139.7078073,35.6911878,
東京都新宿区新宿3-4-1
139.7056270,35.6907822,
東京都新宿区市谷田町1-3
139.7355798,35.6926912,
東京都新宿区四谷1-3-22
139.7289917,35.6862696,
東京都新宿区歌舞伎町1-3-5
139.7035410,35.6945067,
東京都新宿区歌舞伎町1-14-4
139.7019745,35.6945705,
東京都新宿区歌舞伎町1-26-6
139.7004413,35.6950454,
東京都新宿区西新宿7-1-1
139.6992943,35.6941316,
東京都新宿区西新宿7-9-7
139.6981916,35.6949732,
東京都新宿区百人町1-18-8
139.6955250,35.7016167,
東京都新宿区百人町2-11-25
139.6991329,35.7018002,
東京都新宿区高田馬場2-18-6
139.7050011,35.7139962,
東京都新宿区高田馬場2-14-2
139.7071981,35.7125354,
東京都新宿区高田馬場1-34-8
139.7042068,35.7121909,
東京都新宿区高田馬場1-34-12
139.7041790,35.7119659,
東京都渋谷区代々木1-30-6
139.7019528,35.6816777,
東京都渋谷区千駄ヶ谷1-30-8
139.7100715,35.6809585,
東京都渋谷区桜丘町15-15
139.7015788,35.6560085,
東京都渋谷区渋谷2-17-5
139.7043812,35.6591388,
東京都渋谷区宇田川町36-2
139.6972123,35.6620215,
東京都渋谷区渋谷1-16-14
139.7025757,35.6614745,
東京都荒川区西日暮里5-23-6
139.7675873,35.7321156,
東京都荒川区東日暮里5-51-11
139.7721982,35.7282051,
東京都港区赤坂3-10-2
139.7366666,35.6763293,
東京都港区新橋4-10-2
139.7562514,35.6648119,
東京都港区新橋1-17-2
139.7571124,35.6684642,
東京都港区芝5-34-7
139.7470472,35.6462388,
東京都港区芝大門2-3-1
139.7538879,35.6567100,
東京都港区港南2-3-29
139.7429121,35.6290796,
東京都港区高輪3-25-22
139.7378514,35.6304154,
東京都江東区亀戸2-20-7
139.8253644,35.6976951,
東京都葛飾区東金町1-42
139.8711235,35.7704183,
東京都立川市柴崎町3-4-14
139.4146625,35.6966468,
東京都立川市曙町2-13-10
139.4151235,35.6987800,
東京都立川市曙町2-9-1
139.4155373,35.7009965,
東京都武蔵野市中町1-6-7
139.5603612,35.7038828,
神奈川県横浜市中区元町1-18
139.6502110,35.4413525,
神奈川県横浜市中区港町2-6
139.6367062,35.4441327,
神奈川県横浜市中区伊勢佐木町2-66
139.6320260,35.4436606,
神奈川県横浜市鶴見区鶴見中央1-3-3
139.6776540,35.5082843,
神奈川県鎌倉市小町1-6-19
139.5511114,35.3194949,
神奈川県鎌倉市大船1-7-1
139.5323658,35.3537686,
神奈川県川崎市川崎区駅前本町3-3
139.6991820,35.5297282,
神奈川県川崎市川崎区砂子1-1-10
139.7010568,35.5314140,
神奈川県足柄下郡箱根町湯本白石下706-35
139.1015186,35.2308553,
埼玉県川越市脇田町103
139.4841802,35.9072644,
千葉県市川市八幡2-6-15
139.9278380,35.7223281,