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

Dubu
 2011-08-08 01:30
#151299 #151299
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Warum benutzt du nicht direkt CPAN:Algorithm::Diff? CPAN:Text::Diff ist ja nur ein Wrapper um CPAN: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";
}

View full thread Hilfe für Regex