Thread Hilfe für Regex (21 answers)
Opened by lousek at 2011-08-06 17:24

lousek
 2011-08-08 20:04
#151353 #151353
User since
2011-01-19
28 Artikel
BenutzerIn

user image
Hallo ihr beide

Zuerst mal ein grosses Dankeschön!!!
Wirklich super, die Hilfe hier :)

Zuerst mal eine kurze Frage zu Dubu's Script - 1. ist mir nicht hunderprozentig klar, was Set::Scalar ist, die Doku sagt dazu nur "basic set operations"; 2. was ist der unterschied zwischen difference und unique resp warum verwendest du nicht unique?
Code: (dl )
1
2
3
    $a->difference($b, $c)              (a b)
$a->symmetric_difference($b, $c) (a b e h i)
$a->unique($b, $c) (a b h i)


Das unique hier scheint nicht wie das uniq vom linux commando zu sein, wo Zeilen, welche in beiden vorkommen, entfernt werden.

Genau, schlussendlich sind es Dateipfade.
Vielleicht erinnert sich topeg noch an den Thread hier: http://www.perl-community.de/bat/poard/thread/1600...
Ich wollte dort eigentlich nicht den ganzen Thread neu aufrollen, da der Titel auch "Ordnerstruktur in der DB abbilden" ist, und nicht die Differenz. Dann hatte ich es eben mit dem diffen versucht, und darum habe ich diesen Thread aufgemacht.

Nun hatte ich die "geniale" Idee, dass ich die Zeilen zum diffen wie folgt zusammensetze:
/dies/ist/der/pfad;inode;mtime;ctime

Ich war dann soweit, dass es "fast" geklappt hat; den SELECT aus der Datenbank (SELECT path, ino, mtime, ctime FROM dir;) habe ich so formatiert und in das eine Array eingelesen. Für die Einträge vom Dateisystem habe ich mittels stat() die Infos ausgelesen und dann ebenfalls so formatiert und in ein Array eingelesen.
Dann habe ich die beiden Arrays verglichen, und dann die übrig gebliebenen Items auseinander genommen und geschaut, ob sich evt. nur die mtime oder ctime geändert hat.
Es hat bis auf das von topeg genannte Problem mit den falschen Funden perfekt funktioniert; sprich es hat einen Pfad sowohl in "DB only" wie auch in "FS only" angezeigt, da er beim Array der DB am Ende stand, und beim Array vom FS irgendwo in der Mitte.

So, nun wieder zum Code :)

"tie" erübrigt sich also für mich, wenn ich das richtig sehe, aber ich werde es sicher in Zukunft mal brauchen können :)

Das Beispiel von Dubu sieht sehr simpel aber effizient aus (oder einfach besonders einfach für einen Perl-DAU wie mich :))
Aber könnte ich nicht einfach gerade schreiben:
Code: (dl )
1
2
my @db = $nachher->unique($vorher)->members;
my @fs = $vorher->unique($nachher)->members;


Jetzt ist natürlich wieder die Frage, was unique genau macht ...

Ich teste und suche mal weiter :)

LG
lousek

View full thread Hilfe für Regex