perlのDigest::MD5;でのMD5算出が異なる
下記、スクリプトをレンタルサーバ上と、WindowsOS上で走らせてみたところ、おなじファイルにも関わらず、MD5が異なります。
何故でしょうか?
#!/usr/local/bin/perl
use strict;
use warnings;
use Digest::MD5;
my $file = 'test.zip';
my $ctx = Digest::MD5->new;
open my $fh, "<$file";
$ctx->addfile($fh);
my $md5 = $ctx->hexdigest;
close($fh);
open my $fh2, ">>md5.txt";
print $fh2 "$file $md5\n";
print "$file $md5\n";
close $fh2;
No.1ベストアンサー
- 回答日時:
test.zipファイルを読み込む時にOSに応じた改行コード変換が行われていると思います。
それを抑制するために
open my $fh, "<$file";
の後で
binmode $fh;
を行ってみてください。
バイナリファイルを操作する時はbinmodeが必要になります。
この回答への補足
まさに、おっしゃるとおりでした!
的確なアドバイスありがとうございます。
バージョンやファイル破損などほとんど関係ないところで
色々悩んでいたものが解決いたしました。
ここで、不思議に思うのですが、レンタルサーバ上でも、
通常のファイル読み込みやCGIは改行ありで解釈していると思うのですが、
何故、bindmodeを使わなくても、正常に算出できたのでしょうかね?
もし分かりましたらこちらも教えいただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- 英語 2 SPEAKING NATURALLY People often use informal ter 1 2023/05/08 18:09
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- Ruby 教えてください 2 2023/01/04 17:50
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列をカウントする方法
-
ファイル全てを .xlsm に変更し...
-
csvファイルの横方向への改行に...
-
MATLABのm-fileについて
-
WindowsでPerlをする際,1行目の...
-
Perl の「stringify」の意味に...
-
AutoNts
-
ファイルの存在の有無を確かめ...
-
一定時間が経過したフォルダの削除
-
while(<ハンドラ>) {} で行数を...
-
画像アップロード機能を追加し...
-
batファイルでrenameができませ...
-
while文がうまく動かない
-
VBAでCSVファイルの特定行を書...
-
配列のサイズを動的に拡張
-
ディレクトリのファイル作成を...
-
ANSI Cでファイル名、ディレク...
-
VB6.0でDB接続する際に切断時の...
-
Pythonの再帰関数の動作の流れ...
-
AutoCADのスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
csvファイルの横方向への改行に...
-
python renameについて
-
VBAコードを張り付け後のエクセ...
-
ファイルの存在の有無を確かめ...
-
行を指定して削除する方法PERL
-
VBA テキストファイルを読み取...
-
ファイル全てを .xlsm に変更し...
-
Firefox で file:// で始まる U...
-
fgets で値が取得できない
-
perl ファイルが開かない
-
MATLABのm-fileについて
-
Perl の「stringify」の意味に...
-
PerlでのUseless use...
-
JSP URLに表示される拡張子 .jsp
-
巨大なテキストの最終行を取得...
-
複数ファイルを1つにするシェ...
-
drtファイルはどうしたら開...
-
fopen64について
-
perlで画像をダウンロードしよ...
おすすめ情報