home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl
-
- Usage: reform [-lNUM] [-rNUM] [-iNUM] [-sNUM] [files]
-
- # Set default values for left margin, right margin, indent
- # and paragraph spacing.
-
- $l = 0;
- $r = 0;
- $i = 0;
- $s = 1;
-
- # Process any switches.
-
- while ($ARGV[0] =~ /^-/) {
- $_ = shift;
- /^-(l|r|i|s)(\d+)/ && (eval "\$$1 = \$2", next);
- die "Unrecognized switch: $_\n";
- }
-
- # Calculate format strings.
-
- $r = $l + 65 unless $r;
- $r -= $l; # make $r relative to $l
- die "Margins too close\n" if $l + $i >= $r;
-
- $LEFT = ' ' x $l;
- $INDENT = ' ' x $i;
- $RIGHT1 = '^' . '<' x ($r - 1 - $i);
- $RIGHT2 = '^' . '<' x ($r - 1);
- $SPACING = "\n" x $s;
-
- # Define a format at run time.
-
- $form = <<"End of Format Definition";
- format STDOUT =
- $LEFT$INDENT$RIGHT1
- \$_
- $LEFT$RIGHT2~~
- \$_
- $SPACING.
- End of Format Definition
-
- print $form if $debugging;
- eval $form;
-
- # Set paragraph mode on input.
-
- $/ = '';
-
- # For each paragraph...
-
- while (<>) {
- s/\s+/ /g; # Canonicalize white space.
- s/ $//; # Trim final space.
- s/([a-z0-9][.!?][)'"]*) /$1 /g; # Fix sentence ends.
- write; # Spit out new paragraph.
- }
-