Bu soru, kodda yaptığım değişikliklerin, metin dosyasına gönderdiği değerleri etkilemediğinden emin olma ihtiyacından kaynaklanmaktadır. İdeal olarak, içeriğin aynı olup olmadığını, boşlukları ve hepsine bağlı olarak iki dosya adında ve return 1
veya return 0
'da bir alt öğe alırdım. Metin işlemesinin Perl'in forté olduğu göz önüne alındığında, iki dosyayı karşılaştırıp aynı olup olmadıklarını (test edilmemiş kodun altında) belirlemek oldukça kolay olmalıdır. Ben (sans CPAN modülleri) düşünebilirizİki dosyanın içeriğinin aynı olup olmadığını belirlemek için Perl'i nasıl kullanabilirim?
use strict;
use warnings;
sub files_match {
my ($fileA, $fileB) = @_;
open my $file1, '<', $fileA;
open my $file2, '<', $fileB;
while (my $lineA = <$file1>) {
next if $lineA eq <$file2>;
return 0 and last;
}
return 1;
}
tek yolu, söz konusu iki dosya açın ve bir fark bulunana kadar çizgi-by-line bunları okumaktır. Fark bulunmazsa, dosyalar aynı olmalıdır. Ancak bu yaklaşım kısıtlı ve beceriksizdir. Toplam satır iki dosyada farklıysa ne olur? Çizgi sayısını belirlemek için açıp kapatmalı mıyım, sonra da metinleri taramak için tekrar açılmalı mıyım? Yuck.
Bu konuda perlfaq5 numaralı belgede hiçbir şey göremiyorum. Çekirdek Perl 5.6.1 dağılımıyla gelmedikçe modüllerden uzak kalmak istiyorum.
Bu sorunun daha önce SO üzerinde gelmediğine şaşırdım. – Zaid
neden diff kullanmıyorsunuz? - Eğer üzerindeyseniz * nix – heferav
@heferav: Perl'e hitap ederek, hangi ustalıkla başa çıkabiliriz. Unix programlama konusunda pek fazla bir şey yapmadım, hepsi bu kadar;) – Zaid