• ベストアンサー
  • 困ってます

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

  • 質問No.9658792
  • 閲覧数78
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (2/2)

普段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も使おうとしています。

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 44% (4439/9961)

他カテゴリのカテゴリマスター
$cmpr = compare ("test3.txt", "test4.txt");
ならば,内容が同じなら0を返すはずですよ。
お礼コメント
Haruma2265

お礼率 100% (2/2)

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

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 34% (27/78)

ファイルが同じなら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
お礼コメント
Haruma2265

お礼率 100% (2/2)

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

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

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

ご回答ありがとうございました。
投稿日時:2019/09/21 16:07
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ