- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlのDigest::MD5;でのMD5算出が異なる)
perlのDigest::MD5でのMD5算出が異なる
このQ&Aのポイント
- perlのDigest::MD5を使用して同じファイルでも異なるMD5が算出される理由について説明します
- レンタルサーバ上とWindowsOS上で走らせた場合にも同じファイルでも異なるMD5が算出される現象について説明します
- 問題の原因としては、ファイルの読み込みモードや改行コードの違いが関与している可能性があることを指摘します
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
test.zipファイルを読み込む時にOSに応じた改行コード変換が行われていると思います。 それを抑制するために open my $fh, "<$file"; の後で binmode $fh; を行ってみてください。 バイナリファイルを操作する時はbinmodeが必要になります。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
binmodeの働きは、 Linux/Unixのとき =>あってもなくても動作は同じ Windowsのとき =>binmodeだとそのまま入出力で、binmodeないと読み込み時CRを読み飛ばし、書き込み時LFをCR+LFに変換 です。
質問者
お礼
ありがとうございます。 とても参考になりました!
補足
まさに、おっしゃるとおりでした! 的確なアドバイスありがとうございます。 バージョンやファイル破損などほとんど関係ないところで 色々悩んでいたものが解決いたしました。 ここで、不思議に思うのですが、レンタルサーバ上でも、 通常のファイル読み込みやCGIは改行ありで解釈していると思うのですが、 何故、bindmodeを使わなくても、正常に算出できたのでしょうかね? もし分かりましたらこちらも教えいただけると幸いです。