Perl/PHPでファイルのデータ内容の比較を行う方法

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark

Perlとphpでファイルの比較を行ってみます。2つのファイルの一致するかを検証するプログラムです(差分の取得は行ないません)。
以下の順に前半にPerl、後半にphpでの記述方法を記しています。

  1. Perlで比較する
  2. phpで比較する
1. Perlで比較する

File::Compareモジュールを使用して実現します。


use File::Compare;

my $target_a = "比較対象A";
my $target_b = "比較対象B";

print compare( $target_a, $target_b );

exit;

解説:
一致していれば “0″ を出力します。
一致していなければ “1″ を出力します。
どちらかのデータが存在しないなどエラーの場合は “-1″ を出力します。

以下のように、1行目のモジュール名の後に”cmp”を指定することで、6行目の”compare”を短く表記することができます。

use File::Compare qw( cmp );

my $target_a = "比較対象A";
my $target_b = "比較対象B";

print cmp( $target_a, $target_b );

exit;

その他、一行ずつ比較し異なる部分が発生した時点で値を返す”text_compare”が用意されています。

File::Compareの内容:
http://cpan.uwinnipeg.ca/htdocs/perl/File/Compare.pm.html

2. phpで比較する

fread関数でそれぞれ読み込んでから比較をします。

$cmp = array();

$target_a = "比較対象A";
$target_b = "比較対象B";
$list = array( $target_a, $target_b );

foreach( $list as $value ){
	$file = fopen( $value , "r");
	$data = fread( $file, filesize( $value ) );
	fclose( $file );
	array_push( $cmp, $data );
}

echo $cmp[0] === $cmp[1] ? 0 : 1;

exit;

解説:
一致していれば “0″ を出力します。
一致していなければ “1″ を出力します。

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark
関連する記事:
  1. FlashでPerlを介した別ドメインのデータ取得方法(mimeType判別付き) +PHP版
  2. ActionScript3.0(AS3.0) – addEventListenerで関数へ引数を渡す
  3. FlashとCGIとの連携の方法 (AS3.0)
  4. FlashとPerlでsocket通信をする方法 (AS3.0)
コメント 停止中