1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Dumper Slice
$VAR1 = [
{
'Length' => '1.78',
'Age' => '55',
'Name' => 'Rolf',
'Weigth' => '90'
},
{
'Length' => '1.82',
'Age' => '53',
'Name' => 'Otto',
'Weigth' => '82'
}
];
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
my $slice = [ { 'Length' => '1.78', 'Age' => '55', 'Name' => 'Rolf', 'Weigth' => '90' }, { 'Length' => '1.82', 'Age' => '53', 'Name' => 'Otto', 'Weigth' => '82' } ]; # Sortierte Ausgabe nach Name: foreach my $r( sort{ $a->{Name} cmp $b->{Name} }@$slice){ printf("Name => %s, Alter => %u\n", $r->{Name}, $r->{Age}); } #Name => Otto, Alter => 53 #Name => Rolf, Alter => 55
1 2 3 4 5
my @part = @array[2, 5, 23..42]; my @values = @hash{qw/ foo bar /}; # gleichbedeutend mit my @part = ($array[2], $array[5], $array[23], usw., $array[42]); my @values = ($hash{foo}, $hash{bar});
perldoc DBI...
fetchall_arrayref
...
For example, to fetch just the first column of every row:
$tbl_ary_ref = $sth->fetchall_arrayref([0]);
To fetch the second to last and last column of every row:
$tbl_ary_ref = $sth->fetchall_arrayref([-2,-1]);
QuoteEinen Array-of-Hashes habe ich jetzt auf die Schnelle nicht gesehen.
Quote334SOL OW15814 3.426 1.939 7.248 -0.3619 -0.3902 -0.2208
334SOL HW115815 3.502 1.899 7.293 -0.9124 0.8057 1.9164
334SOL HW215816 3.406 1.878 7.177 1.7875 -1.4072 -0.0461
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl open (IN,"<test.gro") or die "Die Datei wurde nicht gefunden\n"; while (<IN>) { if ($_ =~ m/SOL/) $zw = substr($_,39,5); $xw = substr($_,23,5); $yw = substr($_,31,5); } close(IN);
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";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl use strict; use warnings; my $file='test.txt'; my @koordinates; open(my $fh, '<', $file) or die("Error open $file ($!)\n"); while($line=<$fh>) { # angenommen die Koordinaten stehen als "x,y,z" in der Datei. my @values=split(/\s*,\s*/,$line); push(@koordinates,\@values); } close($fh); # nach Dritter Spalte Sortieren. my @sorted=sort{$a->[2] <=> $b->[2]}@koordiantes; # Ausgabe print join(',',@$_)."\n" for(@sorted);