我有一个有5个键的哈希,每个键都有5个值
foreach $a(@mass){
if($a=~some regex){
@value=($1,$2,$3,$4,$5);
$hash{"keysname$c"}="@value";
c++;
}
}
每个标量都是不同参数的值,我必须为哈希中的所有键确定第一个数组的最高值
编辑:
代码必须将key1的第一个值与key2、key3… key5的第一个值进行比较并打印最高的值
这将打印结构的最大值,例如
my %hash = ( k1 => [6,4,1], k2 => [16,14,11] );
use List::Util qw(max);
# longest array
my $n = max map $#$_, values %hash;
for my $i (0 .. $n) {
my $max = max map $_->[$i], values %hash;
print "max value on position $i is $max\n";
}
对于字符串,
my %hash = ( k1 => "6 4 1", k2 => "16 14 11" );
use List::Util qw(max);
# longest array
my $n = max map $#{[ split ]}, values %hash;
for my $i (0 .. $n) {
my $max = max map [split]->[$i], values %hash;
print "max value on position $i is $max\n";
}
如果我正确理解了你的问题(有点不清楚),那么我想你想要这样的东西:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use List::Util 'max';
my (@data, @max);
while (<DATA>) {
chomp;
push @data, [split];
}
for my $i (0 .. $#{$data[0]}) {
push @max, max map { $_->[$i] } @data;
}
say "@max";
__DATA__
93 3 26 87 7
66 96 46 77 42
26 3 71 64 91
31 27 14 40 86
82 72 71 34 7
试试这个
map {push @temp, @{$_}} values %hash;
@desc_sorted= sort {$b <=> $a} @temp;
print $desc_sorted[0],"\n";
map将所有列表合并到一个列表中,sort将按降序对合并数组进行排序。