Schrift
[thread]10609[/thread]

Die Reihenfolge meiner Liste ändern! Hilfe!!!



<< >> 2 Einträge, 1 Seite
Pro_Galli
 2007-10-18 15:29
#101015 #101015
User since
2007-10-02
12 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-Leute!!

Ich habe ein Problem, das schon seit einen paar Tage nicht lösen kann, und ist das ich eine Liste habe, wie die folgende:

2112;6630325;SolidCAM;66303251_BUCHSE.PRT
2112;6630325;SolidCAM;66303251_BUCHSE_000.PRT
2112;6630325;2112;6630325A-.o
2112;6630325;GEO;6630325-SP1AVO0202112.GEO
2112;6807602;2110;6807602A-.o
2112;6807602;2112;6807602A-.o
2112;6807602;2127;6807602A-.o
2126;6924191;2125;6924191AA.O
2126;6924191;2125;6924191BA.o
2126;6924191;2126;6924191AA.o
2126;6924191;2127;6924191A-.o



Nun möchte ich die Reihenfolge der Zeile ändern und so soll sie aussehen


2112;6630325;2112;6630325A-.o #---------------------------hier
2112;6630325;SolidCAM;66303251_BUCHSE.PRT
2112;6630325;SolidCAM;66303251_BUCHSE_000.PRT
2112;6630325;GEO;6630325-SP1AVO0202112.GEO
2112;6807602;2112;6807602A-.o#<--------------------------hier
2112;6807602;2110;6807602A-.o
2112;6807602;2127;6807602A-.o
2126;6924191;2126;6924191AA.o #<--------------------------hier
2126;6924191;2125;6924191AA.O
2126;6924191;2125;6924191BA.o
2126;6924191;2127;6924191A-.o

Die Zeilen wollte ich eigentlich anordnen, in Abhängigkeit von dem 1 und 3 Element meines Arrays. Also wenn die Zeile mit 2112 anfängt, dann soll der 3 Element dieser gleichen Zeile auch 2112 haben, solange das zweite Element (in diesem Fall 6630325) nicht geändert wird.

Ich habe das folgende Script geschrieben, aber es hat nicht mit der neuen Reihenfolge geklappt.

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
for (@vorhandene_programme)
        {
                $zeile = $_;
                @split_vorhandene_programme = split (/;/, $zeile);
                $laufende_kostenstelle = @split_vorhandene_programme[0];
                $material_nummer = @split_vorhandene_programme[1];
                $gefundene_kostenstelle = @split_vorhandene_programme[2];
                
                if ($laufende_kostenstelle == $gefundene_kostenstelle)
                {
                        $zeile_mit_gleicher_kst = $_;
                        if ($merker == 0)
                        {
                                print @gefundene_programme_in_andere_kst;
                                @gefundene_programme_in_andere_kst = ();
                        }
                        print "$zeile_mit_gleicher_kst";
                        $merker = 1;
                        
                }
                else
                {       
                        $merker = 0; 
                        $zeile_mit_anderer_kst = $_;

                        push (@gefundene_programme_in_andere_kst, $zeile);
                }
        }
renee
 2007-10-18 16:23
#101023 #101023
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
40
41
42
43
44
45
46
#!/usr/bin/perl

use strict;
use warnings;

my @array = <DATA>;
my %hash;

# in den Hash überführen
for ( @array ){
    my @info = split /;/, $_;
    push @{ $hash{$info[0]} }, [$_, @info];
}

# neu sortieren
for my $key ( keys %hash ){
    my $sec_index = 0;
    my $sec       = "";
    for ( 0 .. $#{ $hash{$key} } ){
        if( $hash{$key}->[$_]->[2] ne $sec ){
            $sec       = $hash{$key}->[$_]->[2];
            $sec_index = $_;
        }
        if( $hash{$key}->[$_]->[3] eq $key ){
            splice( @{ $hash{$key} },$sec_index, 0 , splice( @{$hash{$key}},$_,1 ) );
        }
    }
}

# Ausgabe
for my $key ( sort keys %hash ){
    print $_->[0] for @{ $hash{$key} };
}

__DATA__
2112;6630325;SolidCAM;66303251_BUCHSE.PRT
2112;6630325;SolidCAM;66303251_BUCHSE_000.PRT
2112;6630325;2112;6630325A-.o
2112;6630325;GEO;6630325-SP1AVO0202112.GEO
2112;6807602;2110;6807602A-.o
2112;6807602;2112;6807602A-.o
2112;6807602;2127;6807602A-.o
2126;6924191;2125;6924191AA.O
2126;6924191;2125;6924191BA.o
2126;6924191;2126;6924191AA.o
2126;6924191;2127;6924191A-.o
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/
<< >> 2 Einträge, 1 Seite



View all threads created 2007-10-18 15:29.