use strict; use warnings; my @nums = qw (0 1 4 5 6 11 14 15 16 20 24 25 26 30 34 35 36); foreach (@nums) { print "in=$_\t rounded=", round_nearest5($_), "\n"; } sub round_nearest5 # for an positive integer numeric value { my $in = shift; my ($last_digit) = $in =~ /(\d)\s*$/; if ($last_digit <5 and $in >= 10 ) { $in =~ s/(\d)$/0/; } elsif ($last_digit >=5) { $in += (10-$last_digit); } return $in; } __END__ in=0 rounded=0 in=1 rounded=1 in=4 rounded=4 in=5 rounded=10 in=6 rounded=10 in=11 rounded=10 in=14 rounded=10 in=15 rounded=20 in=16 rounded=20 in=20 rounded=20 in=24 rounded=20 in=25 rounded=30 in=26 rounded=30 in=30 rounded=30 in=34 rounded=30 in=35 rounded=40 in=36 rounded=40