Thread Daten in Array mit Spalten schreiben
(9 answers)
Opened by ElPresidente at 2012-06-05 18:59
Deine Lösung mit substr ist nicht zuverlässig. Soweit ich sehe sind die Anzahl der Zeichen vor den gesuchten Werten nicht Konstant. Besser ist es an den Leerzeichen zu Trennen und die Werte dann auszulesen.
Günstig ist es beim Öffnen einer Datei auszugeben warum das Öffnen fehlschlug. Das steht in $!. Weiterhin sei empfohlen strict und warnings zu benutzen. Damit ist es leichter Fehler zu finden. Außerdem sollte man das dreiparameterige open nutzen damit umgeht man ein paar Probleme. 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; my $file='test.gro'; my @koordinates; open(my $fh, '<', $file) or die("Die Datei $file konnte nicht geöffnet werden ($!)\n"); while($line=<$fh>) { # nächste Zeile wenn $line kein "SOL" enthält next unless($line=~/SOL/); # Zeilenumbruch am Ende entfernen chomp($line); # an den Leerzeichen splitten my @values=split(/\s+/,$line); # werte zuweisen my $xw=$values[2]; my $yw=$values[3]; my $zw=$values[4]; # zweidimensionales Array erzeugen # "[ ... ]" ist ein anonymes Array push(@koordinates,[$xw,$yw,$zw]); } close($fh); # nach Dritter Spalte Sortieren. my @sorted=sort{$a->[2] <=> $b->[2]}@koordiantes; # Ausgabe print join(',',@$_)."\n" for(@sorted); # auf einen Wert zugreifen: print "Erste Zeile Ditte Spalte: ".$koordiantes[0][2]."\n"; |