Perl: 2012年5月アーカイブ

いや、うちの環境では問題なく動いてるんだけど。

自動で他所のサーバからログファイルを FTP で get してきてほげほげするプログラムを Perl で書いたのだが、FTP 処理に Net::FTP モジュールを使っている。

うちの社内環境では問題なく動くのだが、お客さんとこのサーバに持ち込むとエラーが出てしまう。

Can't use an undefined value as a symbol reference at /usr/lib/perl5/5.8.5/Net/FTP/dataconn.pm line 53.

という具合。
まあ、Net::FTP モジュールのバージョンが違うんだろうけど。(お客さんところのバージョンを調べるのを忘れていたが、Perl のバージョンはうちは v5.10.1、お客さんのところは v5.8.5。Net::FTP モジュールのバージョンも随分違うのだろう。但し、dataconn.pm のバージョンは同じだった)

$ftp->get($remote_file, $local_file) でファイルの取得をするところで発生している。

ググってみるとけっこうこのエラーで悩んでる人いるなあ。
ただ、日本語ページで解決策が書かれたものは無かった。
英語のフォーラムの書き込みを見ると、どうも FTP サーバに接続時に、明示的にパッシブモードの指定をしないといかんようじゃねえ。

ということで、接続処理のところを、

$ftp = Net::FTP->new($host);
 ↓
$ftp = Net::FTP->new($host, Debug=>0, Passive=>0);

このように修正したらエラーは出なくなった。
(Debug はおまけね)

古いバージョンの Net::FTP モジュールを使う時はご注意を。

このアーカイブについて

このページには、2012年5月以降に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のアーカイブはPerl: 2012年2月です。

次のアーカイブはPerl: 2012年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら