2005/11/01(火) [n年前の日記]
#4 [prog] 画像ファイルの内容をperlスクリプトで確認するところで悩む
某お絵かき掲示板の、過去ログ更新用スクリプトの作成を始めているのだけど。画像ファイルを、過去ログ保存用ディレクトリに自動でコピーするところで悩む。
過去ログ保存用ディレクトリには、いくつか、実際の画像とは異なる画像ファイル *1 が存在していて。それらファイルの存在チェックをして、「この画像ファイルはコピーする必要なし」という結果になってしまう。どうせなら、それらファイルに対して、上書きコピーしていいかどうかまで自動で判別させたい。が、どんな方法があるだろう。
チェックサムの類を求めればいいのかな。MD5 等を算出して。とはいえ、それだと、全てのファイルに対してMD5算出をするような処理になりそうでもあるし。さてはて。…事前にファイルサイズを確認すれば、多少は MD5算出の回数も減るかしら。
過去ログ保存用ディレクトリには、いくつか、実際の画像とは異なる画像ファイル *1 が存在していて。それらファイルの存在チェックをして、「この画像ファイルはコピーする必要なし」という結果になってしまう。どうせなら、それらファイルに対して、上書きコピーしていいかどうかまで自動で判別させたい。が、どんな方法があるだろう。
チェックサムの類を求めればいいのかな。MD5 等を算出して。とはいえ、それだと、全てのファイルに対してMD5算出をするような処理になりそうでもあるし。さてはて。…事前にファイルサイズを確認すれば、多少は MD5算出の回数も減るかしら。
◎ _Perl表技集 :
非常に参考になるページ。ありがたや。
_定数を使う
方法があったとは知らなかった。
_MD5の取得 が出来るのか。ActivePerl のドキュメントを見たら、一応載ってるらしく。これでなんとかなるかも。 _ファイルを一文字列として読み込む という方法もあった。
_Digest::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」と書いてある画像。
[ ツッコむ ]
以上です。