mieki256's diary



2005/11/01(火) [n年前の日記]

#4 [prog] 画像ファイルの内容をperlスクリプトで確認するところで悩む

某お絵かき掲示板の、過去ログ更新用スクリプトの作成を始めているのだけど。画像ファイルを、過去ログ保存用ディレクトリに自動でコピーするところで悩む。

過去ログ保存用ディレクトリには、いくつか、実際の画像とは異なる画像ファイル *1 が存在していて。それらファイルの存在チェックをして、「この画像ファイルはコピーする必要なし」という結果になってしまう。どうせなら、それらファイルに対して、上書きコピーしていいかどうかまで自動で判別させたい。が、どんな方法があるだろう。

チェックサムの類を求めればいいのかな。MD5 等を算出して。とはいえ、それだと、全てのファイルに対してMD5算出をするような処理になりそうでもあるし。さてはて。…事前にファイルサイズを確認すれば、多少は MD5算出の回数も減るかしら。

_Perl表技集 :

非常に参考になるページ。ありがたや。 _定数を使う 方法があったとは知らなかった。

_MD5の取得 が出来るのか。ActivePerl のドキュメントを見たら、一応載ってるらしく。これでなんとかなるかも。 _ファイルを一文字列として読み込む という方法もあった。

_Digest::MD5 - MD5アルゴリズムへのPerlインターフェース という文書も。

下のような感じかしら。
#!/usr/bin/perl
use Digest::MD5;

my $file = "H:/temptemp/test_oekakibbsbkup/test/kakolog/7001_7100/oekaki_7001.png";

{
    open(FILE,$file) || die $!;
    binmode FILE;
    my $imgbin;
    {
        local $/ = undef;
        $imgbin = <FILE>;
    }
    close(FILE);

    my $md5 = Digest::MD5->new;
    $md5->add($imgbin);

    print $md5->hexdigest, "\n";
    print $md5->b64digest, "\n";
}

# 別の方法

{
    open(FILE, $file) || die $!;
    binmode(FILE);
    my $md5 = Digest::MD5->new;
    while (<FILE>) {
        $md5->add($_);
    }
    close(FILE);
    print $md5->hexdigest, "\n";
    print $md5->b64digest, "\n";
}

*1: 「Coming Seen」と書いてある画像。

以上です。

過去ログ表示

Prev - 2005/11 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project