• ベストアンサー

perlにて2つのファイル比較

いつもお世話になっています。 今回perlで2つのCSVファイルを比較して、マッチしたものをエクセルで表示させるスクリプトを作ろうとしています。 エクセルに表示するときに、OLE32を使うことは前回教えていただいたのですが、2つのファイルを比較する方法が分かりません; ネットなどでは調べたのですが、参考になるサイトなど見つけられなかったので、詳しい方お力をお貸しください。 参考になりそうなサイトも教えていただけると、とても助かります。 よろしくお願いします。

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

  • ベストアンサー
noname#25358
noname#25358
回答No.2

>一致した項目だけをエクセルで書き出したいのです  CSVファイルでは、行のことを「レコード」、その行に含まれるデータ1つ1つを「項目」と呼びますが、その認識でよろしいでしょうか?  ファイルAとBのレコードの数が一致しており、それぞれ1行ずつ読み込んで項目を順番に比較すればいいのであれば、 open(A, "<fileA"); open(B, "<fileB"); while ( <A> ) {  @a = split(/,/,$_);  @b = split(/,/,<B>);  for($i = 0; $i < @a; $i++ ) {   if ( $a[$i] eq $b[$i] ) {    print "$a[$i]\t";   }  }  print "\n"; }  これでイケるはずです。  でもこれだとデータの順番とかデタラメになっちゃいますけど、いいんですか?(^_^;  最終的に何がやりたいのか分からないので、これ以上アドバイスしようがないのですが。

paraiso1210
質問者

お礼

お返事遅くなりました。 先ほど何とか解決しました。 何度も解答していただきありがとうございました。

その他の回答 (2)

回答No.3

>CSVファイルを比較して  とありますが、サンプルとしてどういった 構造なのかを書いていただけるとありがたいです。  他の方がやられているように『eq』でやる文字列比較 のやり方にあう場合とhashによるデータ比較と大まかに 2種類ぱっと思いつきます。  只、やはりデータの構造が分からないとどちらをお勧め すべきかは判断がつきません。

paraiso1210
質問者

お礼

[eq]で何とか出来ました! ご解答ありがとうございました。

noname#25358
noname#25358
回答No.1

 どういう方法で比較するんでしょうか?  この質問文からだと、「読み込んで比較演算子 eq で比較する」という回答の仕方しかできませんが……。

paraiso1210
質問者

補足

>>どういう方法で比較するんでしょうか? 中身が似ているけれど、違うファイルAとBを比較して、一致した項目だけをエクセルで書き出したいのです。。。 分かりにくくてすみません。これで分かるでしょうか…?

関連するQ&A