use MT::FileMgr;
my $fmgr = MT::FileMgr->new('Local')
or die MT::FileMgr->errstr;
defined(my $bytes = $fmgr->put($src, $dest))
or die $fmgr->errstr;
MT::FileMgrはファイル管理ドライバーを実装するためのベースとなるクラスです。ファイル管理を分離することにより、ファイルをローカルのディスク上に作成するかFTPを用いるか、といったことを他のクラスで考慮する必要がなくなります。たとえば、ユーザーのサイトを再構築するプロセスでは、内容の再構築のみを行って、その結果をMT::FileMgrドライバーに渡せばよく、再構築を行う側では、サイトがローカルにあるのかFTPサーバー上にあるのかを考慮する必要がありません。MT::FileMgrが即座に適切なドライバーへの処理を行い、必要な場所に内容を保存します。
$typeに指定したドライバー・クラス(現在は"FTP"と"Local"のみです)を読み込み、適切なドライバーのサブクラスにblessした新規ファイル・マネージャー・オブジェクトを返します。
@argsはオプションです。この引数は、ドライバー・サブクラスのinitメソッドに受け渡され、ドライバー固有の初期化に使用されます。たとえば、「FTP」ドライバーでは@args中にFTPホスト、ログイン名、パスワードが必要ですが、「Local」ホストは何も必要としません。
初期化エラーが起こったときにはundefを返します。次の「エラー処理」の項を参照してください。
$destで指定したパスの$srcというファイルに内容を出力します。$srcはファイルハンドルでもローカル・ファイルのパス名でもかまいません。$destはリモートまたはローカル(ドライバーによります)のファイル・パスでなければなりません。
$typeはオプションで、putがアップロード・ファイル用のものか、HTMLファイル出力かを指定します。これはFileMgrドライバーに対して、書き込みのモードやumask設定などを伝えるためのものです。$typeには"upload"か"output"が指定可能で、デフォルトは"output"です。戻り値は出力したバイト数(0のこともあります)になります。エラー発生時にはundefを返します。次の「エラー処理」の項を参照してください。
$dataに指定したデータ・ブロックを、$destに指定したパスに出力します。$srcはそのデータを含むスカラー値でなければなりません。また、$destはリモートまたはローカル(ドライバーによります)のファイル・パスでなければなりません。
$typeはオプションで、put_dataがアップロード・ファイル用のものか、HTMLファイル出力かを指定します。これはFileMgrドライバーに対して、書き込みのモードやumask設定などを伝えるためのものです。$typeには"upload"か"output"が指定可能で、デフォルトは"output"です。
戻り値は出力したバイト数(0のこともあります)になります。エラー発生時にはundefを返します。次の「エラー処理」の項を参照してください。
$srcに指定したパスからデータ・ブロックを取得し、取得したデータを返します。$srcリモートまたはローカル(ドライバーによります)のファイル・パスでなければなりません。
$typeはオプションで、get_dataがアップロード・ファイルからのものか、HTMLファイル出力かを指定します。これはFileMgrドライバーに対して、書き込みのモードやumask設定などを伝えるためのものです。$typeには"upload"か"output"が指定可能で、デフォルトは"output"です。エラー発生時にはundefを返します。次の「エラー処理」の項を参照してください。
$pathに指定したファイルまたはディレクトリが存在すればtrueを返し、存在しなければfalseを返します。
$pathに指定したパスを再帰的に作成します。つまり、パス中に一つでも存在しないものがあれば、それを作成します。成功するとtrueを返します。エラー発生時にはundefを返します。次の「エラー処理」の項を参照してください。
$srcに指定したファイルまたはディレクトリを$destにリネームします。成功するとtrueを返します。エラー発生時にはundefを返します。次の「エラー処理」の項を参照してください。
上のメソッドはすべて(existsを除きます)、エラー発生時にはundefを返します。エラー・メッセージは、そのクラスまたはオブジェクト(呼び出しメソッドがクラス・メソッドかインスタンス・メソッドかによります)のerrstrメソッドを呼び出すことで取得できます。たとえば、クラス名から呼び出した場合は次の例のようにエラー・メッセージを取得します。
my $fmgr = MT::FileMgr->new('Local')
or die MT::FileMgr->errstr;
また、オブジェクトから呼び出した場合には、次の例のように取得します。
defined(my $bytes = $fmgr->put($src, $dest))
or die $fmgr->errstr;