Markus: Arrays vergleichen und unterschiede erkennen

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

  1. 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

  2. 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

  3. 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?

    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.