Leser: 5
|< 1 2 3 4 5 >| | 49 Einträge, 5 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
use IO::File;
my @zeilen=();
open (DATEI, "</tmp/testdat.txt") or die "Fehler: $!";
while(<DATEI>)
{
chomp( $_ );
print "$_ \n";
push @zeilen, [ split /;/, $_, 4 ];
}
close (DATEI);
print "$zeilen[1][2]\n"
1 2 3 4 5 6 7
my @liste = ( 41, 37, 10, 30, 127, 512, 111 ); print "@liste\n\n"; my @sort_1 = sort @liste; print "1) @sort_1 (Standard)\n"; my @sort_2 = sort { $a cmp $b } @liste; print "2) @sort_2 (ASCII - aufsteigend)\n"; my @sort_3 = sort { $a <=> $b } @liste; print "3) @sort_3 (numerisch - aufsteigend)\n"; my @sort_4 = sort { $b <=> $a } @liste; print "4) @sort_4 (numerisch - absteigend)\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use strict; use warnings; my @zeilen=(); my $input_file='/tmp/testdat.txt'; open (my $fileh, '<', $input_file) or die "Fehler bei open($input_file) : $!"; while(<$fileh>) { chomp($_ ); print "$_ \n"; push @zeilen, [ split /;/, $_, 4 ]; } close ($fileh); my $first_line=shift(@zeilen); @zeilen=sort{$a->[2] <=> $b->[2]}@zeilen; # wenn es Text ist statt "<=>" "cmp" benutzen. unsift(@zeilen, $first_line);
print join(';', @{$_}), "\n" for sort vergl @zeilen;
print join(';', @{$_}), "\n" for @zeilen; #sortiert wieder ausgeben
@zeilen=sort{$a->[2] <=> $b->[2]}@zeilen
leo11+2008-08-15 05:38:14--Genau. "sort" schiebt einen Arrayeintrag nach oben wenn, die Vergleichsopperation -1 zurück liefert, lässt den Eintrag wo er ist wenn 0 gemeldet wird und schiebt bei 1 nach unten. (oder umgekehrt ... mußt du ausprobieren wie herum er sortiert :) )@Hagen:
Danke für dieses Bsp. es hat mir sehr weitergeholfen.
Dieses return -1 if $$a[2]<$$b[2]; ist mir noch unklar. Bedeutet das: Vergleiche das Element der dritten Spalte der Zeile x mit dem Element der dritten Spalte der Zeile Y und gib -1 zurück wenn es kleiner ist?
leo11+2008-08-15 05:38:14--"<=>" liefert -1 zurück wenn a<b, 0 wenn a==b und 1 wenn a>b. (oder umgekehrt ... schwehr zu behalten das) Ähnliches gilt für "cmp" nur halt für Buchstaben.Bedeutet die Zeile:
Code (perl): (dl )@zeilen=sort{$a->[2] <=> $b->[2]}@zeilen
Das eine Zeile nach oben verschoben wird, wenn das Element in der dritten Spalte kleiner ist?
|< 1 2 3 4 5 >| | 49 Einträge, 5 Seiten |