« CSS Nite in Osaka/Nagoya (Movable Type特集)。 | メイン | なぜSEOは嫌われるのか? »

MT::FileMgrでファイルの読み書きとか。

発端はこれ。

何か古い記事が再掲載されてるということであれこれツッコミが入ってますね。

ベアワードのファイルハンドルはグローバルということですね。とはいえ、Googleとかで調べると実際出てくるのは比較的古いものが多いようで。

Movable Type(4.1)はどうしているんだろうと思って覗いてみたらみたらこんなコードが(App:CMSのcreate_dashboard_stats_file部分)。


    local *FOUT;
    if ( !open( FOUT, ">$file" ) ) {
        return;
    }

「local *FOUT;」とな。で、まぁそれは本題ではなくて、MTの場合はFileMgrを使うということなんだろうな。


use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';

use MT;
use MT::FileMgr;

my $src    = 'Hello FileMgr!';
my $updata = 'Hello FileMgr! (Updated)';
my $out    = 'hello.txt';
my $put    = 'put.txt';
my $rename = 'rename.txt';
my $dir    = 'directory';

$out       = File::Spec->catdir( $dir, $out );
$put       = File::Spec->catdir( $dir, $put );
$rename    = File::Spec->catdir( $dir, $rename );

my $fmgr = MT::FileMgr->new( 'Local' ) or die MT::FileMgr->errstr;

print $fmgr->mkpath( $dir );

# directoryを作成する (成功した場合「1」)

print "¥n";

print $fmgr->exists( $dir );

# directoryが存在するか (存在する場合「1」)

print "¥n";

print $fmgr->can_write( $dir );

# directoryが書き込み可能か (書き込み可能な場合「1」)

print "¥n";

print $fmgr->put_data( $src, $out );

# directory/hello.txt に 'Hello FileMgr!' を書き込む (戻り値はバイト数)

print "¥n";

print $fmgr->put( $out , $put );

# directory/put.txt に hello.txt の中身を書き込む (戻り値はバイト数)

print "¥n";

print $fmgr->content_is_updated( $out, ¥$updata );

# directory/out.txt の中身(Hello FileMgr!)と $updata(Hello FileMgr! (Updated)) を比較する (値が異なる場合「1」)

print "¥n";

print $fmgr->rename( $put, $rename );

# directory/put.txt を directory/rename.txt にリネームする (成功した場合「1」)

print "¥n";

print $fmgr->get_data( $rename );

# directory/rename.txt の内容をprintする

実行結果


1
1
1
14
14
1
1
Hello FileMgr!

MT::FileMgr->new( 'Local' ) のところ、 MT::FileMgr->new( 'FTP',@args ) (@argsにFTPホスト、ログイン名、パスワードを入れる)とFTPサーバー上のファイル読み書きができる(らしい。そうなんだ...知らなかった)。

参考:

カテゴリー: MovableType

トラックバック

このエントリーのTBPingURL:
http://junnama.alfasado.net/mt/RRrt4444.mt/2405/mtfilemgr.html

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


トップページ | アーカイブ(このブログの全てのエントリーの一覧)

最近のエントリー

このブログのフィードを取得
[フィードとは]