Hallo,
ich arbeite mich seit drei Wochen in Perl ein und stehe jetzt vor folgendem Problem:
ich habe einen Array, bei welchem jedes Element die Form
>locus 2 transcript 3/12 confidence 2.000 length 238
hat.
ich möchte nun aus diese "Liste" ordnen. Meine Idee war zunächst die Arrayelemente tab-separiert zu splitten und dann zu sortieren, meine bemühungen sind jedoch gescheitert. geordnet werden soll nach locus [2], länge [8], dann nach confidence [6].
ich bin auf die Schwarzsche-Transformation gestoßen und erhalte jedoch immer wieder folgenden Fehler:
Use of uninitialized value in numeric comparison (<=>) at Bach/Script/try.pl line 8.
mein Script sieht folgender maßen aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use vars qw( @a @b );
open (INFILE, "/idtab.txt") or die $!;
my @array = <INFILE>;
close (INFILE);
my @sorted = map { $_->[0] }
sort {
$a->[1] <=> $b[1] or
$b->[2] <=> $a[2] or
$a->[3] <=> $b[3]
}
map {[$_,(split(/\t/,$_))[2,8,6]] } @array;
print @sorted;
kann mir jemand sagen, was ich falsch mache oder wie ich mein Problem lösen kann?
vielen dank im voraus!
ramona
modedit Editiert von pq: code-tags hinzugefügt
Last edited: 2012-05-03 15:47:56 +0200 (CEST)