21.7. offset: Indent TextDo you have a printer that starts each line too close to the left margin? You might want to indent text to make it look better on the screen or a printed page. Here's a Perl script that does that. It reads from files or standard input and writes to standard output. The default indentation is 5 spaces. For example, to send a copy of a file named graph to the lp printer, indented 12 spaces: % offset -12 graph | lp Here's the Perl script that does the job: Go to http://examples.oreilly.com/upt3 for more information on: offset #!/usr/local/bin/perl if ($ARGV[0] =~ /-[0-9]+/) { ($indent = $ARGV[0]) =~ s/-//; shift @ARGV; } else { $indent = 5; } while (<>) { print " " x $indent, $_; } If there's an indentation amount in the first command-line argument, the dash is stripped and the value stored, then that argument is shifted away. Then a loop steps through the remaining arguments, if any (otherwise standard input is read) and outputs their text preceded by spaces. The script uses the Perl operator "string" x n, which outputs the string (in this case, a single space) n times. The Perl $_ operator contains the current input line. -- JP Copyright © 2003 O'Reilly & Associates. All rights reserved. |
|