ほたっと
日記とかメモとか、ほたっと。
テンプレート

このサイトのテンプレートは、
公式テンプレート photo-k3 を使わせていただいています。
テンプレート作者様、ありがとー。



プロフィール

でぐでぐ

Author:でぐでぐ



おみくじ

©Plug-in by



占い



最近の記事



最近のコメント



カテゴリー



カレンダー

08 | 2008/09 | 10
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -



天気予報


-天気予報コム- -FC2-



ブロとも申請フォーム

この人とブロともになる



ブログ内検索



リンク

このブログをリンクに追加する



月別アーカイブ



[Perl]WWW::Mechanize の落とし穴
WWW::Mechanizeって手軽にWebクライアントが作れて便利いいのですが、たまに「うーん、頑張れ」と思える落とし穴もあったりします。

以下、後学のために無駄にはまってしまった点をいくつかご紹介。


■head()はスタックに積まれない
WWW::Mechanize自体には head() はないのですが、LWP::UserAgentを継承しているので使うことができます。
で、親モジュールのメソッドなので結果はスタックに積まれません。当たり前ですが。
なので、スタックを使って back() することがあるクライアントの場合、head() するとカレントのコンテンツが head() した内容で上書きされてしまいます。
これが意外と盲点でした。
head() する前は _push_page_stack() するのをお勧めします。

■Windows環境ではsave_content()しないこと
binmode()呼んでくれてませんので、バイナリファイルを保存しようとすると見事に化けます。
WWW::Mechanizeに限らないのですが、Windows環境でのファイル出力機能には要注意です。

■METAタグのrefreshでジャンプはしてくれない
METAタグの解釈はしてくれます。
取得されるHTTP::Responseオブジェクトの中に Refresh ヘッダが追加されます。
ただ、あたかもヘッダがあったかのようにしてくれるだけでジャンプまではしてくれません。
ま、refreshは厳密にはリダイレクトではないのでクライアントマターになるのでしょうけど、”頑張ってよー”と思っちゃう点の最たるもんです。

■Storableでインスタンスをクローンできない
CODEブロックが含まれているようで dclone() できませんでした。
もっとも、LWP::UserAgent が clone() メソッド持っているので、わざわざ dclone() する必要ないのですけど、その事実を知らなかったためにはまったというお話です。
普通ははまりませんわな、こんなとこに。とほほ。


ま、いずれも重箱ネタです。
ご参考までに。

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://hotatto.blog27.fc2.com/tb.php/423-1ca3430e
この記事にトラックバックする(FC2ブログユーザー)