Have to admit I have never seen @_ used for anything else than for function arguments, and I don't exactly understand push @data, [@_]; Using @_ seems nice and intuitive, applying it to my example gives me:
use strict; my $output = <<EOD; 4865FA9B 0702 P H rmt0 TAPE OPERATION ERROR DE9A52D1 0704 I S rmt0 DEVICE DUMP RETRIEVED 4865FA9B 0701 P H rmt2 TAPE OPERATION ERROR F3E9B3E2 0620 I O SYSJ2 UNABLE TO ALLOCATE SPACE IN FILE SY +STEM DCB47997 0511 T H hdisk4 DISK OPERATION ERROR EOD my (@data, %identifier); for my $line (split /\n/,$output) { @_ = split /\s+/, $line, 6; push @data, [@_]; $identifier{$_[0]} = $data[-1]; # Index for first field } # Sort on multiple fields, in this case 4th (class) and 2nd (time)... print "\@data:\n"; for my $rec (reverse sort {$a->[3] cmp $b->[3] || $a->[1] <=> $b->[1]} + @data) { print "Error ID: $rec->[0] Time: $rec->[1]\n"; }
Also, if i understand you right, %identifier contains a hash of array references which I can use to access @data elements e.g.
print "key $_ value: $identifier{$_}->[0]\n" for (keys %identifier);
Thanks for the help!
Niel
In reply to Re^2: Hash keys affect sorting
by 0xbeef
in thread Hash keys affect sorting
by 0xbeef
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |