Thread Hilfe für Regex
(21 answers)
Opened by lousek at 2011-08-06 17:24
Warum benutzt du nicht direkt Algorithm::Diff? Text::Diff ist ja nur ein Wrapper um Algorithm::Diff, der die von diff(1) gewohnte Ausgabe mit '+' und '-' davor erzeugt. Wenn du ohnehin nur die hinzugefügten und weggefallenen Zeilen willst, kann Algorithm::Diff die direkt liefern.
Außerdem ist es vielleicht sinnvoll, mit Tie::File zu arbeiten, wenn die Dateien sehr groß werden können, so müssen sie nicht im Speicher gehalten werden. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #!/usr/bin/perl use strict; use warnings; use Algorithm::Diff; use Tie::File; tie my @x, "Tie::File", $ARGV[0] or die $!; tie my @y, "Tie::File", $ARGV[1] or die $!; my $diff = Algorithm::Diff->new(\@x,\@y); my (@db, @fs); while ($diff->Next()) { next if $diff->Same(); push @db, $diff->Items(2); # hinzugekommen push @fs, $diff->Items(1); # weggefallen } foreach my $dbitem (@db) { print $dbitem, "\n"; } foreach my $fsitem (@fs) { print $fsitem, "\n"; } |