Net::FTP(PerlでFTPによるファイル送信を行う)

PerlFTPを利用したい場合、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
公開

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です