- ベストアンサー
perlにて2つのファイル比較
いつもお世話になっています。 今回perlで2つのCSVファイルを比較して、マッチしたものをエクセルで表示させるスクリプトを作ろうとしています。 エクセルに表示するときに、OLE32を使うことは前回教えていただいたのですが、2つのファイルを比較する方法が分かりません; ネットなどでは調べたのですが、参考になるサイトなど見つけられなかったので、詳しい方お力をお貸しください。 参考になりそうなサイトも教えていただけると、とても助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>一致した項目だけをエクセルで書き出したいのです 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"; } これでイケるはずです。 でもこれだとデータの順番とかデタラメになっちゃいますけど、いいんですか?(^_^; 最終的に何がやりたいのか分からないので、これ以上アドバイスしようがないのですが。
その他の回答 (2)
- fmoon_yoshi
- ベストアンサー率25% (1/4)
>CSVファイルを比較して とありますが、サンプルとしてどういった 構造なのかを書いていただけるとありがたいです。 他の方がやられているように『eq』でやる文字列比較 のやり方にあう場合とhashによるデータ比較と大まかに 2種類ぱっと思いつきます。 只、やはりデータの構造が分からないとどちらをお勧め すべきかは判断がつきません。
お礼
[eq]で何とか出来ました! ご解答ありがとうございました。
どういう方法で比較するんでしょうか? この質問文からだと、「読み込んで比較演算子 eq で比較する」という回答の仕方しかできませんが……。
補足
>>どういう方法で比較するんでしょうか? 中身が似ているけれど、違うファイルAとBを比較して、一致した項目だけをエクセルで書き出したいのです。。。 分かりにくくてすみません。これで分かるでしょうか…?
お礼
お返事遅くなりました。 先ほど何とか解決しました。 何度も解答していただきありがとうございました。