--- title: これまでの応用(PerlからDBにアクセスして、ウェブサービスをたたく) author: kazu634 date: 2009-07-18 url: /2009/07/18/_1299/ wordtwit_post_info: - '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";}}' categories: - mysql - 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,