#!/usr/bin/perl use strict; use warnings; my @array = ; 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