http://www.perlmonks.org?node_id=11105913


in reply to How to build a better mousetrap (or a variable to hold a column-measuring scale)

My current way of generating such an on-screen ruler is that I display position digits for the 100s, 10s, and 1s places vertically on (n % 5) except for the 1s place, where I display a pipe ('|') on (n % 10), a plus ('+') on (n % 5), or the value of (n % 10) otherwise. (Whitespace added to improve readability in <code> segment.)

perl -le ' my $n = shift @ARGV; $n = 80 unless ( defined $n ); my @place; foreach + my $i ( 1 .. $n ) { $place[2] .= ( ( $i >= 100 and ! ($i % 5) ) ? +int( $i / 100 ) % 10 : q{ } ); $place[1] .= ( ( $i >= 10 and ! ( $i % + 5 ) ) ? int( $i / 10 ) % 10 : q{ } ); $place[0] .= ( ! ( $i % 10 ) ? + q{|} : ( ! ( $i % 5 ) ? q{+} : $i % 10 ) ); } foreach my $s ( + reverse @place ) { print $s; }' 60
And example output (for width 60):
1 1 2 2 3 3 4 4 5 5 6 1234+6789|1234+6789|1234+6789|1234+6789|1234+6789|1234+6789|

Hope that helps.