This is another approach that might not be shorter, but
does work with ruler lengths that aren't a multiple of
10.
Update: Just noticed that
petral does it
more neatly.
#!perl -w
use strict;
print ruler(@ARGV);
sub ruler {
my ($x,$y) = (' ', '');
map{$x.=sprintf('%10d',$_/10) if $_%10 == 0 && $_ != 0; $y.=$_%10} (
+0..$_[0]);
return "$x\n$y\n";
}
I would have liked to use
for rather than
map, but I couldn't get the 1 line version
to compile ;-(
I also can't get it to work with non-positive integer
values ;-((.