トップ «前の日記(■2010-04-06) 最新 次の日記(■2010-07-01)» 編集

どんぞこ日誌

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|07|08|12|
2007|01|04|08|12|
2008|01|02|03|04|06|07|08|10|11|12|
2009|01|02|04|05|06|07|08|09|11|12|
2010|01|03|04|07|08|10|11|12|
2011|01|02|03|04|05|06|07|08|10|12|
2012|01|02|03|05|06|07|08|09|10|
2013|01|02|07|08|09|
2014|08|09|
2015|08|
2016|06|07|12|
2017|01|03|08|
2018|03|
2022|03|
2023|03|
2024|02|

同人関連(どんぞこ楽屋) | 旧い雑文   


■2010-04-22

* [Perl][メモ] perl-casual #02のライブコーディングで気づいた点B!

 昨日のperl-casual #02でlestrratさんがtwitter apiからデータを取得するプログラムのライブコーディングをされました。その中で、全然本質的じゃないところなのですが、一点気づいたことがあるので補足を。

LWPを使ってTwitter APIを叩き、JSONデータを展開する部分で:

 # $responseはHTTP::Responseのオブジェクト
 decode_json( $response->decoded_content );

というコード。昨日はちゃんと動作していましたが、場合によっては"Wide character in subroutine entry"でcroakします。これは、$response->decoded_contentが返す値がUnicodeだからです。
 ではなぜ昨日は大丈夫だったかというと、Twitter APIが返したJSONデータは文字列が\uでエスケープされていました。つまり、$response->decoded_contentの返値はUnicode文字列ではあるものの実質asciiだけで構成されています。こういう場合はdecode_jsonもcroakしません。ですから、上記の部分は

 decode_json( $response->content ); # 生のutf-8データ

とした方が安全です。decoded_contentが使いたい場合は

 JSON->new->utf8(0)->decode( $response->decoded_content );

などのようにすると良いでしょう。decode_jsonの動作については、私の先日の記事なども。

* [メモ] 『逆引きAcme大全』を忘れていかれた方へB!

 昨日の懇親会の場で『逆引きAcme大全』を買ったのに本を忘れて帰られた方がいらっしゃるようです。心当たりありましたらmakamaka.donzoko at gmail.com あたりまでご連絡くださいませ。

本日のツッコミ(全2件) [ツッコミを入れる]
_ lestrrat (■2010-04-22 11:56)

本当のスクリプトは decode_json $response->content なんだけど、そっちなら大丈夫・・・なはずですよね? <br> <br>昨日は勢いで SYNOPSISコピペしちゃって説明するの面倒だったw

_ makamaka (■2010-04-22 12:00)

昨日はお疲れ様でした〜 <br> <br>はい、それで大丈夫です!> decode_json $response->content <br> <br>

[]