こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイルに差異があるかの確認ができない

普段VBを使用しており、Perlはほぼ初心者
(十年前に教科書読んでちょっと作成した程度)です。
何千ものファイルを処理する必要があるため
Perlを使用することになったのですが、
「File::Compare」のcompareを使用したファイルの比較が
うまくいきません。Text::Diffを使用した比較はうまくいくため
何がいけないのかわからず困っております。

前提として、Perl Strawberryを使用しています。

use File::Compare;

my $file1 = "test3.txt";
my $file2 = "test4.txt";
my $cmpr = 0;

$cmpr = compare ("test3.txt", "test4.txt");

if ($cmpr == 0){
  print "ファイルの内容が異なります";
}

と、これだけなのですがうまく動作しません。
ファイルの中身が異なっていることは確認済みです。
また全く同じファイルを使用して
print OUT diff "test3.txt", "test4.txt", {STYLE => "Context"};
とすると問題なく動作します。

できればファイルの中身が異なることを確認してから
diffを実行したいためcompareも使おうとしています。

詳しい方には非常に簡単な問題なのだと思いますが、
お手上げ状態のためお力を貸していただけると幸いです。
よろしくお願いいたします。

投稿日時 - 2019-09-20 16:35:27

QNo.9658792

困ってます

質問者が選んだベストアンサー

$cmpr = compare ("test3.txt", "test4.txt");
ならば,内容が同じなら0を返すはずですよ。

投稿日時 - 2019-09-20 16:58:23

お礼

ご指摘ありがとうございます!
大変尾恥ずかしながら、どうやら参考にしていたサイトの記述が間違っていたようです。
1にしたら無事思い通りの動作になりました。
ご回答ありがとうございました。

投稿日時 - 2019-09-21 16:04:03

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ファイルが同じなら0,違うなら1,エラーなら-1を返されました

(Desktop):perl
use File::Compare;_
print compare("Win.txt","Win.txt"),"\n";
__END__
0

(Desktop):perl
use File::Compare;
print compare("Win.txt","conna.txt"),"\n";
__END__
1

(Desktop):perl
use File::Compare;
print compare("Win.txt","txt"),"\n";
__END__
-1

投稿日時 - 2019-09-20 23:00:07

お礼

エラーの記述までお知らせいただきありがとうございます。
-1が返ってくるとのこと、覚えておきます。

そして、大変お恥ずかしながら、参考にしていたサイトの記述が間違っていたようで、
1に変えたら無事思い通りの動作になりました。

ちゃんと本を買おうと思います。。。

ご回答ありがとうございました。

投稿日時 - 2019-09-21 16:07:32

あなたにオススメの質問