Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl: dateien vergleichen



philbo
09-11-2001, 15:34
hallo,

ich hab ein perl script geschrieben um mp3-dateien in einem directory zu vergleichen. ich hab nun zwei mal dasselbe array und will in 2 schleifen jede mit jeder datei vergleichen. natürlich nicht mit sich selbst, daher will ich vorher überprüfen ob die filenames gleich sind:



----------------------------



foreach $filename1 (@inhalt1) {

#erste schleife...

print STDERR "\nfilename1 $filename1";



foreach $filename2 (@inhalt2) {

print STDERR "\ncheck $filename1 $filename2";

unless($filename1 == $filename2) {

print STDERR "\nFILENAME2: $filename2";

}

}

----------------------------------



anstatt unless( ... hab ich auch schon "if ($filename1 != filename2)" probiert, mit dem gleichen ergebnis:



------------------------------------

[bodi@phil dupmp3]$ ./dupmp3.pl

filename1 kittie - Brackish (live Ozzfest).mp3

check kittie - Brackish (live Ozzfest).mp3 .

check kittie - Brackish (live Ozzfest).mp3 ..

check kittie - Brackish (live Ozzfest).mp3 kittie - Brackish (live Ozzfest).mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - Charlotte (Alternate Mellow Version).mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - Charlotte (Liquid Depression Remix).mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - Electric.mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - Feel Good (Featuring Serj Tankian From System Of A Down And Morgan Lander From Kittie).mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - immortal.mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - jonny.mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - kittie and korn this town m.mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - live (explicit version).mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - mouth full of poison.mp3

check kittie - Brackish (live Ozzfest).mp3 kittie - mouthful of poison.mp3

---------------------------------

usw.

wie man sieht wird trotz nicht übereinstimmenden filenames das "print STDERR "\nFILENAME2: $filename2";" nicht aufgerufen. warum?

dwz
09-11-2001, 16:28
Halloele,
da du zwei Strings vergleichen willst, und nicht zwei Zahlen, musst du in der Bedingung statt dem "==" ein "eq" verwenden.

Der Abschnitt sieht dann so aus:


unless($filename1 eq $filename2) {
print STDERR "\nFILENAME2: $filename2";
}

Ich hoffe das klappt.

Viele Gruesse,
Markus

philbo
09-11-2001, 16:37
jau, das isses!
dankeschön