Perl

CPANでLWPが遅い

CPANでLWPがファイアウォールに遮られてタイムアウトし、時間が掛かってしまう場合の対処
。.bash_profileに

export FTP_PASSIVE=1

を入れると、LWPはパッシブモードで接続しにいくようになるので、無駄な待ち時間が無くなる。超、すてき。
bash_profileを書き換えたら以下で再読込を忘れずに

source .bash_profile

この情報は以下のサイトを参考にしました。

サンクス!

ftp.ayamura.orgは無くなっている模様なので、urllistから削除が必要。

-eとか-Mってなんだよ?

ファイルに対していろいろ操作してるみたいです。

  • eは存在するかどうか、-Mはファイルの更新時間からどれだけ日数が経っているかが返るみたい。

http://www.tohoho-web.com/wwwperl1.htm#MachingOperand

いきなり、なんとなくわかってきたかも

# キャッシュがないかキャッシュ生成時から指定時間経過していれば GET
my $get_data = (!(-e $cache) || (-M $cache) > ($ttl / (24 * 60)));
if ( $get_data && (-e $cache)) {
       $get_data = (!(-e $host) || (-M $host) > ($ttl / (24 * 60)));
}
#print $host . "\n";
if ( $get_data ) {
   ...

ここで、ファイルが存在しないか、ファイルの更新時間が指定されたキャッシュ時間を超えていたら、get_dataに1が入りデータ取得のロジックが走る。

となると、何らかの操作でキャッシュファイルが更新され続けていたら、データ取得処理は走らないということになる。