Perl求数组中位值
use List::Util qw(sum);
use POSIX;
sub median {
sum((sort { $a <=> $b } @_ )[int($#_/2), ceil($#_/2)])/2;
}
my @a = qw/ 1 2 3 4/;
my $med = median(@a); #就可以得到数组@a的中位值为2.5
Perl二维哈希(hash)的构造及访问
#构造二维哈希
my %hash;
foreach my $i (1..10) {
foreach my $j (1..10) {
$hash{$i}{$j} = $i + $j;
}
}
#访问
foreach my $k1 (keys %hash) {
foreach my $k2 (keys %{$hash{$k1}}) {
print "$hash{$k1}{$k2}\n";
}
}
Perl数组的哈希(hash)
#定义一个数组的哈希(跟定义一般哈希一样)
my %hash;
#给数组的哈希赋值
$hash{'a'} = [1, 2, 3]; #用[]来强调键值a指代的是一个数组
#往数组的哈希中添加元素100和101
push @{$hash{'a'}}, 100, 101;
Perl按照值的大小给哈希(hash)键排序
my %hash = (
'b' => 1,
'a' => 2,
2 => 3,
);
foreach my $k (sort {$hash{$b} cmp $hash{$a}} keys %hash) {
print "$hash{$k}\n";
}
Perl取整
use POSIX;
#四舍五入
my $a = 3.454;
sprintf "%0.2f", $a;
#向上取整
ceil()
#向下取整
int()/floor()