Arrays vergleichen und unterschiede erkennen
Markus
- perl
Hallo Leute!
Ich weiß über dieses Thema gibt es schon einige Einträge, aber ich glaube keiner passt so richtig.
Ich schildere mal mein Problem:
1. ich habe ein Array @array1, welches die Dateien eines
Verzeichnisses beinhaltet
2. ich habe ein zweites Array @array2, welches die Dateinamen aus
meiner MySQL-Datenbank beinhaltet, wobei in diesem Array auch die
Dateinamen 2 oder mehrfach vorkommen können
3. jetzt möchte ich gerne die Dateien aus Array1 eliminieren, die
nicht mehr in Array2 (also in der Datenbank) vorhanden sind, so
dass ich am Schluss genau weiß welche Dateien auf der Festplatte
noch gebraucht werden.
Gibt es hierfür einen zuverlässigen Programmiercode?
Gruss,
Markus
Ergänzung:
Also mit Eliminieren meine ich, dass ich genau die Dateinamen brauche, die nicht mehr in der Datenbank vorhanden sind, jedoch auf der Festplatte noch da sind und ich sie damit löschen kann..
gruss,
Markus
Hallo Markus.
[...] jetzt möchte ich gerne die Dateien aus Array1 eliminieren, die nicht mehr in Array2 (also in der Datenbank) vorhanden sind, so dass ich am Schluss genau weiß welche Dateien auf der Festplatte noch gebraucht werden.
Die perlfaq4 könnte dir weiterhelfen:
http://www.perldoc.com/perl5.8.0/pod/perlfaq4.html#How-do-I-test-whether-two-arrays-or-hashes-are-equal-
Vielleicht hilft's
Siechfred
Ich schildere mal mein Problem:
ich habe ein Array @array1, welches die Dateien eines
Verzeichnisses beinhaltetich habe ein zweites Array @array2, welches die Dateinamen aus
meiner MySQL-Datenbank beinhaltet, wobei in diesem Array auch die
Dateinamen 2 oder mehrfach vorkommen könnenjetzt möchte ich gerne die Dateien aus Array1 eliminieren, die
nicht mehr in Array2 (also in der Datenbank) vorhanden sind, so
dass ich am Schluss genau weiß welche Dateien auf der Festplatte
noch gebraucht werden.Gibt es hierfür einen zuverlässigen Programmiercode?
Sowas läßt sich mit HASHes und grep realsieren.
#!/usr/bin/perl -w
use Data::Dumper;
my @a1 = qw/1 2 3 4 5 6 7 8 9 0/;
my @a2 = qw/1 2 3 4 6 7 8 9 9 9 2 3/;
my %h1;
my %h2;
@h1{@a1} = (undef);
@h2{@a2} = (undef);
grep{ delete $h1{$_} if exists $h1{$_}} keys %h2;
print Dumper %h1;
Struppi.