#!/usr/bin/perl -w use strict; use Getopt::Long qw( GetOptions ); # ---------------------------------------------------------------------- sub max ( @ ) { my $rv = $_[0]; foreach my $v ( @_ ) { $rv = $v if $v > $rv; } return $rv; } # ---------------------------------------------------------------------- my $OPT_W; my $OPT_P; my $OPT_F; sub usage ( $ ) { my $reason = @_; die < \$OPT_W, "p|pad=s" => \$OPT_P, "f|format=s" => \$OPT_F) ) { usage "unrecognized options"; } if ( defined $OPT_P && length( $OPT_P ) != 1 ) { usage "-p must be exactly one character"; } unless ( @ARGV == 1 || @ARGV == 2 ) { usage "need either one or two args"; } # ---------------------------------------------------------------------- my ( $start, $stop ) = ( @ARGV, @ARGV ); my $inc = ( $start > $stop ) ? -1 : 1; my $end_val = $stop + $inc; my $width = defined( $OPT_W ) ? $OPT_W : max( length( "$start" ), length( "$stop" ) ); my $pad_char = defined( $OPT_P ) ? $OPT_P : '0'; my $do_pad = defined( $OPT_W ) || defined( $OPT_P ); my $i = $start; for ( my $i = $start; $i != $end_val; $i += $inc ) { if ( $OPT_F ) { printf $OPT_F."\n", $i; } else { my $pad = $do_pad ? $pad_char x ( $width - length( "$i" ) ) : ''; print $pad, $i, "\n"; } } exit 0;