No.1ベストアンサー
- 回答日時:
配列の比較方法にもっと良い書き方がありそうですが、例えばこんな感じでしょうか。
use strict;
use File::Copy 'move';
sub readfile {
my ($filename, $lines_to_cut) = @_;
open(my $fh, "<", $filename) or die "cannot open < $filename: $!";
my @lines = <$fh>;
close($fh);
return @lines[$lines_to_cut .. $#lines];
}
sub is_same_array {
my ($r0, $r1) = @_;
my @a0 = @$r0;
my @a1 = @$r1;
if ($#a0 != $#a1) {
return 0;
}
for (my $i = 0; $i < $#a0; $i++) {
if ($a0[$i] ne $a1[$i]) {
return 0;
}
}
return 1;
}
my $LINES_TO_CUT = 9;
my $FILE_A = 'a.csv';
my $FILE_B = 'b.csv';
my @a_csv = readfile('a.csv', $LINES_TO_CUT);
my @b_csv = readfile('b.csv', $LINES_TO_CUT);
if (is_same_array(\@a_csv, \@b_csv)) {
print "$FILE_A and $FILE_B are same.\n";
} else {
print "$FILE_A and $FILE_B are different.\n";
print "Moving $FILE_A to $FILE_B.\n";
move($FILE_A, $FILE_B);
}
readfileで各行が配列の要素となった配列を、$lines_to_cut行分だけ省いた形で返してもらえるので、is_same_arrayにて単純にその比較をして同じか違うかを判定しています。
CSVとして同じかどうかなんて判断していないので、CSVとしては同じものでも違う書き方をしていたら違うと判断します。例えば、"abc"とabcは同じと本来は解釈すべきですが、こいつは単純な配列の要素の比較しかしないので違うと判断します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(Microsoft Office) VBA CSV出力について 3 2023/04/19 14:14
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVデータの編集の際の重複チェ...
-
perlでcsvファイルを読む(ダブ...
-
Perlで特定行から特定行までを...
-
CSVファイルのデータの行数を取...
-
awkスクリプトでダブルクォーテ...
-
ListBoxのデータを高速でファイ...
-
ExcelをCSV書き出す場合のシー...
-
C言語で特定の行を抽出する方法...
-
window.open でのファイル指定方法
-
パスから最後のディレクトリだ...
-
fgets で値が取得できない
-
ReadLineでの読み出し行を指定する
-
ファイル出力の改行コードをLFに
-
ifstream を利用した1行分のテ...
-
vba dir の相対パス
-
配列の中に重複文字列があるか...
-
オープンしたファイルで行の連結
-
perlで、後ろの行を読んで、前...
-
VBAのFileFormatで悩んでいるこ...
-
全角と半角文字が混在している...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
perlでcsvファイルを読む(ダブ...
-
BBCode削除&改行をサニタイジ...
-
Perlで空白行を削除
-
Perlの初心者です。2重ループ...
-
MATLAB std::exceptionエラー
-
ファイルの3行目までを出力したい
-
perlでファイルの比較
-
pythonでの実績データの処理プ...
-
cgiのログの書き方
-
先頭の単語が一致した時のデー...
-
書き込み時に勝手にクリアさせ...
-
エラーチェック、ファイルに特...
-
Argument "\\\\n" isn't numeri...
-
CSVファイルのデータの行数を取...
-
perl:パターンマッチを使ったif...
-
Pythonでegrep機能をつかいたい
-
batファイルでrenameができませ...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
おすすめ情報