PerlでFTPを利用したい場合、Net::FTPモジュールを利用することになるでしょう。
Net::FTPモジュールについて、説明や翻訳ページは検索すれば沢山見つかります。
しかし、送信するときに重要な「転送モード」について、説明してあるところは多くありません。
なぜかというと、Net::FTPモジュールのドキュメントには転送モードについては記述されていないからです。
ということで、このページでは、転送モードについてご紹介したいと思います。
使用したNet::FTPモジュールのバージョンは2.77でした。
Perlのバージョンが5.8であれば、インストールされています。
使い方
何はともあれ、次のコードを見てください。
Net::FTPモジュールを使おうという方にとっては、コードを見たほうが簡潔だと思います。
use strict; use Net::FTP; # FTP設定 my %ftp = ( addr => 'exsample.com', # FTPアドレス user => 'user_name', # ユーザー名 pass => 'pass_word', # パスワード dir => '/public_html', # 送信先ディレクトリ ); my $ftp = Net::FTP -> new( $ftp{'addr'}, Debug => 0 ) or die; $ftp -> login( $ftp{'user'}, $ftp{'pass'} ) or die; # カレントディレクトリの変更 $ftp -> cwd( $ftp{'dir'} ); # アスキーモード $ftp -> type( 'A' ); # ファイルの送信 $ftp -> put( 'string.txt' ); # バイナリモード $ftp -> type( 'I' ); # ファイルの送信 $ftp -> put( 'image.jpg' ); # 接続切断 $ftp -> quit(); exit;
転送モードにアスキーを指定する場合は、typeに「A」を指定します。
$ftp -> type( 'A' );
転送モードにバイナリを指定する場合は、typeに「I」を指定します。
$ftp -> type( 'I' );
備考
ドキュメントに記載されていないという意味では、今後変更になるかもしれません。
また、ソースコードを読めば判りますが、バイナリを指定する「I」以外に「E」や「L」も用意されているようです。
おわりに
翻訳サイトだけを読んで満足してはいけないということです。
実際に使っているからこそ、気がつくこともあるのです。
疑問に思った事について検索はもちろんのこと、
実際に動作しているモジュールのソースコードに目を通してみましょう。
更新履歴
- 2008-06-03
- 公開