北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

URIとURI::URL

URIURI::URLをファイルに永続化後、解凍したら動かないと言う問題に遭遇した。



これは、こいつらの保持するURI::httpURI::https が、URI::implementor で動的にロードされるため。解凍するだけだとこのメソッドは呼ばれないからねえ。



そんなわけで、



my $obj = retrive('DATAFILE');
my $uri_obj;
if($obj->isa('URI::WithBase')){
$uri_obj = $obj->[0];
}else{
$uri_obj = $obj;
}
ref($obj) =~ /^URI::(.+)/;
URI::implementor($1);





って感じで無理矢理ロードさせる必要がある。



・・・ただし。今見たら、最新の実装ではURI::http等は実体があるので、useで十分。っていうか、useはretrive がやってくれるので何もしなくてOK。便利な世の中になったのう。。。

・2005.08.16

嘘ついてました。バージョンは関係なく、Data::Dumperとevalでシリアライズ・デシリアライズしたときにuseしてくれないのが問題なだけでした・・・ごめんなさい。