- 论坛徽章:
- 7
|
BiRu:- #!/usr/bin/perl
- use strict;
- use warnings;
- my %range;
- while (<DATA>) {
- my @line = split;
- my $number = int( ( $line[-1] - 1 ) / 10 );
- # buhao: my $number = int( $line[-1] / 10 );
- # biru: 11 => int 11/10 = 1 OK
- # danshi: 10 => int 10/10 = 1 NG
- # yinwei: 10 => range 0, 11 => range 1
- # suoyi: 10 => int( ( 10 - 1 ) / 10 ) = 0 OK
- # yiji: 11 => int( ( 11 - 1 ) / 10 ) = 1 OK
- # yiji: 0 => int( ( 0 - 1 ) / 10 ) = 0 OK
- $range{$number}++;
- }
- # xianzai %range: { 1 => 2, 4 => 1, 0 => 4 }
- my $max = 0;
- for ( keys %range ) {
- $max = $_ if $max < $_;
- }
- # print "max: $max\n";
- # max: 4
- for ( 0 .. $max ) {
- my $begin = $_ ? ( $_ * 10 ) + 1 : 0;
- # buhao: my $begin = $_ * 10 + 1;
- # biru: 1 => 1 * 10 + 1 = 11 OK: 11-
- # danshi: 0 => 0 * 10 + 1 = 1 NG: 1-, OK: 0-
- my $end = ( $_ + 1 ) * 10;
- # buhao: my $end = $begin + 9;
- # biru: 11 + 9 = 20 OK: 11-20
- # danshi: 0 + 9 = 9 NG: 0-9, OK: 0-10
- # huo: my $end = ( $_ + 1 ) . '0';
- # huo: my @end = ( $_ + 1, 0 );
- # huo: my $end = $begin + $_ ? 9 : 10;
- my $count = $range{$_} // 0;
-
- # buhao: my $count = $range{$_};
- # biru: 21-30
- # Use of uninitialized value $count in print....
- # 11-20 2
- # 21-30 HERE EMPTY
-
- print $begin, '-', $end, "\t", $count, "\n";
- }
- __DATA__
- a 1
- b 2
- c 0
- d 10
- e 11
- f 12
- g 44
复制代码- 0-10 4
- 11-20 2
- 21-30 0
- 31-40 0
- 41-50 1
复制代码 |
|