Thread Problem beim zeilenweisen Einlesen einer Datei in ein Array !
(23 answers)
Opened by cherished at 2008-06-18 13:29
Du hast - glaube ich - nicht so ganz verstanden, worauf ich hinaus will.
Hier mal zwei Versionen: (Vergleich aller Spalten) 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 28 29 #!/usr/bin/perl use strict; use warnings; use Tie::File; my $file_a = 'a.txt'; my $file_b = 'b.txt'; tie my @b_lines, 'Tie::File', $file_b or die $!; open my $fh, '<', $file_a or die $!; while( my $zeile = <$fh> ){ chomp $zeile; my @spalten = split /;/, $zeile; ZEILE: for my $zeile_b ( @b_lines ){ my @spalten_b = split /;/, $zeile_b; if( @spalten == @spalten_b ){ for ( 0..$#spalten ){ next ZEILE unless $spalten[$_] eq $spalten_b[$_]; } print "Alles klar: $zeile\n"; } } } close $fh; untie @b_lines; (Ausgabe) Code: (dl
)
1 C:\Perl>compare.pl (Vergleich komplette Zeile) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/usr/bin/perl use strict; use warnings; use Tie::File; my $file_a = 'a.txt'; my $file_b = 'b.txt'; tie my @b_lines, 'Tie::File', $file_b or die $!; open my $fh, '<', $file_a or die $!; while( my $zeile = <$fh> ){ chomp $zeile; if( grep{ $_ eq $zeile }@b_lines ){ print "Alles klar: $zeile\n"; } } close $fh; untie @b_lines; (Ausgabe) Code: (dl
)
1 C:\Perl>compare2.pl Jetzt klar, dass Du auch gleich die komplette Zeile vergleichen kannst, wenn Du sowieso alle Spalten durchgehen willst? Edit: Oder etwas anders ausgedrück. Stell Dir vor, Du hast in jeder Zeile nicht diese Zahlen, sondern einfach 'abcd' stehen (in a.txt und b.txt). So wie Du es beschrieben hast, willst Du 'abcd' in 'a','b','c','d' teilen und dann 'a' mit 'a' vergleichen. Wenn das gleich ist, vergleichst Du 'b' mit 'b', 'c' mit 'c' und 'd' mit 'd'. Da kannst Du gleich 'abcd' mit 'abcd' vergleichen, weil dann implizit 'a' mit 'a', 'b' mit 'b', 'c' mit 'c' und 'd' mit 'd' verglichen ist... OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/) -- Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html Perl-Entwicklung: http://perl-services.de/ |