#!/usr/bin/perl
use warnings;
use strict;
sub getmul($$$$) {
        my $num = shift;
        my $num2 = $num % 100;
        my $last = $num2 % 10;
        my $case = $num2 > 4 && $num2 < 21      ? 2 :
                1 == $last                      ? 0 :
                $last > 1 && $last < 5          ? 1
                                                : 2;
        return sprintf "%d %s", $num, $_[$case];
}
printf "%s\n", getmul 122, "услуга", "услуги", "услуг";
printf "%s\n", getmul 38, "попугай", "попугая", "попугаев";
printf "%s\n", getmul 33, "год", "года", "лет";
printf "%s\n", getmul 1001, "ночь", "ночи", "ночей";

__END__

sergey@athlon:/tmp$ ./mul.pl 
122 услуги
38 попугаев
33 года
1001 ночь