Thread Zeilen einlesen und nach dritter Spalte sortieren (48 answers)
Opened by leo11 at 2008-08-14 08:06

Ronnie
 2008-08-24 16:28
#113948 #113948
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
leo11+2008-08-24 14:07:40--
Nun möchte ich als Ergebnis ein Array a, das alle Zeilen enthält, bis in der dritten Spalte 20 steht. Dann ein Array b, das die 20er Zeilen enthält, und ein Array c, dass die restlichen Zeilen bis zu Dateiende enthält.

Je konkreter deine erste Problembeschreibung ist und je detailierter du beschreibst was du schon probiert hast, sowie wie deine Eingangsdaten aussehen und wie die Ausgangsdaten aussehen sollen, desto leichter ist es für uns dir gezielt zu helfen!
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
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my @rows = map {chomp; $_} (<DATA>);
print Dumper in_three_chunks(\@rows, 20);

sub in_three_chunks {
    my $rows = shift;
    my $criteria = shift;
    
    return unless ref $rows or not $criteria =~ /^\d+$/;
    
    my %parted = ( before => [], matching => [], after => [] );
    
    for my $row (@$rows) {
        my $cur = [split /;/, $row];
        
        push @{$parted{'matching'}}, $cur and next if $cur->[2] == $criteria;
        
        unless (@{$parted{'matching'}}) {
            push @{$parted{'before'}}, $cur;
        } else {
            push @{$parted{'after'}}, $cur;
        }
    }
    
    return \%parted;
}

__DATA__
Zeile1;;100;;
Zeile2;;60;;
Zeile3;;20;;
Zeile4;;20;;
Zeile5;;40;;

View full thread Zeilen einlesen und nach dritter Spalte sortieren