]> git.donarmstrong.com Git - perltidy.git/blobdiff - CHANGES
New upstream version 20190601
[perltidy.git] / CHANGES
diff --git a/CHANGES b/CHANGES
deleted file mode 100644 (file)
index 8415f57..0000000
--- a/CHANGES
+++ /dev/null
@@ -1,3183 +0,0 @@
-Perltidy Change Log
-  2018 02 20
-      - RT #124469, #124494, perltidy often making empty files.  The previous had
-        an index error causing it to fail, particularly in version 5.18 of Perl.
-
-        Please avoid version 20180219.
-
-  2018 02 19
-      - RT #79947, cuddled-else generalization. A new flag -cb provides
-        'cuddled-else' type formatting for an arbitrary type of block chain. The
-        default is try-catch-finally, but this can be modified with the 
-        parameter -cbl. 
-
-      - Fixed RT #124298: add space after ! operator without breaking !! secret 
-        operator
-
-      - RT #123749: numerous minor improvements to the -wn flag were made.  
-
-      - Fixed a problem with convergence tests in which iterations were stopping 
-        prematurely. 
-
-      - Here doc targets for <<~ type here-docs may now have leading whitespace.
-
-      - Fixed RT #124354. The '-indent-only' flag was not working correctly in the 
-        previous release. A bug in version 20180101 caused extra blank lines 
-        to be output.
-
-      - Issue RT #124114. Some improvements were made in vertical alignment
-        involving 'fat commas'.
-
-  2018 01 01
-      - Added new flag -wn (--weld-nested-containers) which addresses these issues:
-        RT #123749: Problem with promises; 
-        RT #119970: opening token stacking strange behavior;
-        RT #81853: Can't stack block braces
-
-        This option causes closely nested pairs of opening and closing containers
-        to be "welded" together and essentially be formatted as a single unit,
-        with just one level of indentation.
-
-        Since this is a new flag it is set to be "off" by default but it has given 
-        excellent results in testing. 
-
-        EXAMPLE 1, multiple blocks, default formatting:
-            do {
-                {
-                    next if $x == $y;    # do something here
-                }
-            } until $x++ > $z;
-
-        perltidy -wn
-            do { {
-                next if $x == $y;
-            } } until $x++ > $z;
-
-         EXAMPLE 2, three levels of wrapped function calls, default formatting:
-                p(
-                    em(
-                        conjug(
-                            translate( param('verb') ), param('tense'),
-                            param('person')
-                        )
-                    )
-                );
-
-            # perltidy -wn
-                p( em( conjug(
-                    translate( param('verb') ),
-                    param('tense'), param('person')
-                ) ) );
-
-            # EXAMPLE 3, chained method calls, default formatting:
-            get('http://mojolicious.org')->then(
-                sub {
-                    my $mojo = shift;
-                    say $mojo->res->code;
-                    return get('http://metacpan.org');
-                }
-            )->then(
-                sub {
-                    my $cpan = shift;
-                    say $cpan->res->code;
-                }
-            )->catch(
-                sub {
-                    my $err = shift;
-                    warn "Something went wrong: $err";
-                }
-            )->wait;
-
-            # perltidy -wn
-            get('http://mojolicious.org')->then( sub {
-                my $mojo = shift;
-                say $mojo->res->code;
-                return get('http://metacpan.org');
-            } )->then( sub {
-                my $cpan = shift;
-                say $cpan->res->code;
-            } )->catch( sub {
-                my $err = shift;
-                warn "Something went wrong: $err";
-            } )->wait;
-
-
-      - Fixed RT #114359: Missparsing of "print $x ** 0.5;
-
-      - Deactivated the --check-syntax flag for better security.  It will be
-        ignored if set.  
-
-      - Corrected minimum perl version from 5.004 to 5.008 based on perlver
-        report.  The change is required for coding involving wide characters.
-
-      - For certain severe errors, the source file will be copied directly to the
-        output without formatting. These include ending in a quote, ending in a
-        here doc, and encountering an unidentified character.
-
-  2017 12 14
-      - RT #123749, partial fix.  "Continuation indentation" is removed from lines 
-        with leading closing parens which are part of a call chain. 
-        For example, the call to pack() is is now outdented to the starting 
-        indentation in the following experession:  
-
-            # OLD
-            $mw->Button(
-                -text    => "New Document",
-                -command => \&new_document
-              )->pack(
-                -side   => 'bottom',
-                -anchor => 'e'
-              );
-
-            # NEW
-            $mw->Button(
-                -text    => "New Document",
-                -command => \&new_document
-            )->pack(
-                -side   => 'bottom',
-                -anchor => 'e'
-            );
-
-        This modification improves readability of complex expressions, especially
-        when the user uses the same value for continuation indentation (-ci=n) and 
-        normal indentation (-i=n).  Perltidy was already programmed to
-        do this but a minor bug was preventing it.
-
-      - RT #123774, added flag to control space between a backslash and a single or
-        double quote, requested by Robert Rothenberg.  The issue is that lines like
-
-           $str1=\"string1";
-           $str2=\'string2';
-
-        confuse syntax highlighters unless a space is left between the backslash and
-        the quote.
-
-        The new flag to control this is -sbq=n (--space-backslash-quote=n), 
-        where n=0 means no space, n=1 means follow existing code, n=2 means always
-        space.  The default is n=1, meaning that a space will be retained if there
-        is one in the source code.
-
-      - Fixed RT #123492, support added for indented here doc operator <<~ added 
-        in v5.26.  Thanks to Chris Weyl for the report.
-
-      - Fixed docs; --closing-side-comment-list-string should have been just
-        --closing-side-comment-list.  Thanks to F.Li.
-
-      - Added patch RT #122030] Perl::Tidy sometimes does not call binmode.
-        Thanks to Irilis Aelae.
-
-      - Fixed RT #121959, PERLTIDY doesn't honor the 'three dot' notation for 
-        locating a config file using environment variables.  Thanks to John 
-        Wittkowski.
-
-      - Minor improvements to formatting, in which some additional vertical
-        aligmnemt is done. Thanks to Keith Neargarder.
-
-      - RT #119588.  Vertical alignment is no longer done for // operator.
-
-  2017 05 21
-      - Fixed debian #862667: failure to check for perltidy.ERR deletion can lead 
-        to overwriting abritrary files by symlink attack. Perltidy was continuing 
-        to write files after an unlink failure.  Thanks to Don Armstrong 
-        for a patch.
-
-      - Fixed RT #116344, perltidy fails on certain anonymous hash references:
-        in the following code snippet the '?' was misparsed as a pattern 
-        delimiter rather than a ternary operator.
-            return ref {} ? 1 : 0;
-
-      - Fixed RT #113792: misparsing of a fat comma (=>) right after 
-        the __END__ or __DATA__ tokens.  These keywords were getting
-        incorrectly quoted by the following => operator.
-
-      - Fixed RT #118558. Custom Getopt::Long configuration breaks parsing 
-        of perltidyrc.  Perltidy was resetting the users configuration too soon.
-
-      - Fixed RT #119140, failure to parse double diamond operator.  Code to
-        handle this new operator has been added.
-
-      - Fixed RT #120968.  Fixed problem where -enc=utf8 didn't work 
-        with --backup-and-modify-in-place. Thanks to Heinz Knutzen for this patch.
-
-      - Fixed minor formatting issue where one-line blocks for subs with signatures 
-        were unnecesarily broken
-
-      - RT #32905, patch to fix utf-8 error when output was STDOUT. 
-
-      - RT #79947, improved spacing of try/catch/finally blocks. Thanks to qsimpleq
-        for a patch.
-
-      - Fixed #114909, Anonymous subs with signatures and prototypes misparsed as
-        broken ternaries, in which a statement such as this was not being parsed
-        correctly:
-            return sub ( $fh, $out ) : prototype(*$) { ... }
-
-      - Implemented RT #113689, option to introduces spaces after an opening block
-        brace and before a closing block brace. Four new optional controls are
-        added. The first two define the minimum number of blank lines to be
-        inserted 
-
-         -blao=i or --blank-lines-after-opening-block=i
-         -blbc=i or --blank-lines-before-closing-block=i
-
-        where i is an integer, the number of lines (the default is 0).  
-
-        The second two define the types of blocks to which the first two apply 
-
-         -blaol=s or --blank-lines-after-opening-block-list=s
-         -blbcl=s or --blank-lines-before-closing-block-list=s
-    
-        where s is a string of possible block keywords (default is just 'sub',
-        meaning a named subroutine).
-
-        For more information please see the documentation.
-
-      - The method for specifying block types for certain input parameters has
-        been generalized to distinguish between normal named subroutines and
-        anonymous subs.  The keyword for normal subroutines remains 'sub', and
-        the new keyword for anonymous subs is 'asub'. 
-
-      - Minor documentation changes. The BUGS sections now have a link
-        to CPAN where most open bugs and issues can be reviewed and bug reports
-        can be submitted.  The information in the AUTHOR and CREDITS sections of
-        the man pages have been removed from the man pages to streamline the
-        documentation. This information is still in the source code.
-
-  2016 03 02
-      - RT #112534. Corrected a minor problem in which an unwanted newline
-        was placed before the closing brace of an anonymous sub with 
-        a signature, if it was in a list.  Thanks to Dmytro Zagashev.
-
-      - Corrected a minor problem in which occasional extra indentation was
-        given to the closing brace of an anonymous sub in a list when the -lp 
-        parameter was set.
-
-  2016 03 01
-      - RT #104427. Added support for signatures.
-
-      - RT #111512.  Changed global warning flag $^W = 1 to use warnings;
-        Thanks to Dmytro Zagashev.
-
-      - RT #110297, added support for new regexp modifier /n
-        Thanks to Dmytro Zagashev.
-
-      - RT #111519.  The -io (--indent-only) and -dac (--delete-all-comments)
-        can now both be used in one pass. Thanks to Dmitry Veltishev.
-
-      - Patch to avoid error message with 'catch' used by TryCatch, as in
-           catch($err){
-              # do something
-           }
-        Thanks to Nick Tonkin.
-
-      - RT #32905, UTF-8 coding is now more robust. Thanks to qsimpleq
-        and Dmytro for patches.
-
-      - RT #106885. Added string bitwise operators ^. &. |. ~. ^.= &.= |.=
-      - Fixed RT #107832 and #106492, lack of vertical alignment of two lines
-        when -boc flag (break at old commas) is set.  This bug was 
-        inadvertantly introduced in previous bug fix RT #98902. 
-
-      - Some common extensions to Perl syntax are handled better.
-        In particular, the following snippet is now foratted cleanly:
-
-          method deposit( Num $amount) {
-              $self->balance( $self->balance + $amount );
-          }
-
-        A new flag -xs (--extended-syntax) was added to enable this, and the default
-        is to use -xs. 
-
-        In previous versions, and now only when -nxs is set, this snippet of code
-        generates the following error message:
-
-        "syntax error at ') {', didn't see one of: case elsif for foreach given if switch unless until when while"
-
-  2015 08 15
-      - Fixed RT# 105484, Invalid warning about 'else' in 'switch' statement.  The
-        warning happened if a 'case' statement did not use parens.
-
-      - Fixed RT# 101547, misparse of // caused error message.  Also..
-
-      - Fixed RT# 102371, misparse of // caused unwated space in //=
-
-      - Fixed RT# 100871, "silent failure of HTML Output on Windows". 
-        Changed calls to tempfile() from:
-          my ( $fh_tmp, $tmpfile ) = tempfile();
-        to have the full path name:
-          my ( $fh_tmp, $tmpfile ) = File::Temp::tempfile()
-        because of problems in the Windows version reported by Dean Pearce.
-
-      - Fixed RT# 99514, calling the perltidy module multiple times with 
-        a .perltidyrc file containing the parameter --output-line-ending 
-        caused a crash.  This was a glitch in the memoization logic. 
-
-      - Fixed RT#99961, multiple lines inside a cast block caused unwanted
-        continuation indentation.  
-
-      - RT# 32905, broken handling of UTF-8 strings. 
-        A new flag -utf8 causes perltidy assume UTF-8 encoding for input and 
-        output of an io stream.  Thanks to Sebastian Podjasek for a patch.  
-        This feature may not work correctly in older versions of Perl. 
-        It worked in a linux version 5.10.1 but not in a Windows version 5.8.3 (but
-        otherwise perltidy ran correctly).
-
-      - Warning files now report perltidy VERSION. Suggested by John Karr.
-      - Fixed long flag --nostack-closing-tokens (-nsct has always worked though). 
-        This was due to a typo.  This also fixed --nostack-opening-tokens to 
-        behave correctly.  Thanks to Rob Dixon.
-
-  2014 07 11
-      - Fixed RT #94902: abbreviation parsing in .perltidyrc files was not
-        working for multi-line abbreviations.  Thanks to Eric Fung for 
-        supplying a patch. 
-  
-      - Fixed RT #95708, misparsing of a hash when the first key was a perl
-        keyword, causing a semicolon to be incorrectly added.
-
-      - Fixed RT #94338 for-loop in a parenthesized block-map.  A code block within
-        parentheses of a map, sort, or grep function was being mistokenized.  In 
-        rare cases this could produce in an incorrect error message.  The fix will
-        produce some minor formatting changes.  Thanks to Daniel Trizen 
-        discovering and documenting this.
-
-      - Fixed RT #94354, excess indentation for stacked tokens.  Thanks to 
-        Colin Williams for supplying a patch.
-
-      - Added support for experimental postfix dereferencing notation introduced in
-        perl 5.20. RT #96021.
-
-      - Updated documentation to clarify the behavior of the -io flag
-        in response to RT #95709.  You can add -noll or -l=0 to prevent 
-        long comments from being outdented when -io is used.
-
-      - Added a check to prevent a problem reported in RT #81866, where large
-        scripts which had been compressed to a single line could not be formatted
-        because of a check for VERSION for MakeMaker. The workaround was to 
-        use -nvpl, but this shouldn't be necessary now.
-
-      - Fixed RT #96101; Closing brace of anonymous sub in a list was being
-        indented.  For example, the closing brace of the anonymous sub below 
-        will now be lined up with the word 'callback'.  This problem 
-        occured if there was no comma after the closing brace of the anonymous sub.  
-        This update may cause minor changes to formatting of code with lists 
-        of anonymous subs, especially TK code.
-    
-        # OLD
-        my @menu_items = (
-
-            #...
-            {
-                path     => '/_Operate/Transcode and split',
-                callback => sub {
-                    return 1 if not $self->project_opened;
-                    $self->comp('project')->transcode( split => 1 );
-                  }
-            }
-        );
-
-        # NEW
-        my @menu_items = (
-
-            #...
-            {
-                path     => '/_Operate/Transcode and split',
-                callback => sub {
-                    return 1 if not $self->project_opened;
-                    $self->comp('project')->transcode( split => 1 );
-                }
-            }
-        );
-
-  2014 03 28
-      - Fixed RT #94190 and debian Bug #742004: perltidy.LOG file left behind.
-        Thanks to George Hartzell for debugging this.  The problem was
-        caused by the memoization speedup patch in version 20121207.  An
-        unwanted flag was being set which caused a LOG to be written if 
-        perltidy was called multiple times.
-
-      - New default behavior for LOG files: If the source is from an array or 
-        string (through a call to the perltidy module) then a LOG output is only
-        possible if a logfile stream is specified.  This is to prevent 
-        unexpected perltidy.LOG files. 
-
-      - Fixed debian Bug #740670, insecure temporary file usage.  File::Temp is now
-        used to get a temporary file.  Thanks to Don Anderson for a patch.
-  
-      - Any -b (--backup-and-modify-in-place) flag is silently ignored when a 
-        source stream, destination stream, or standard output is used.  
-        This is because the -b flag may have been in a .perltidyrc file and 
-        warnings break Test::NoWarnings.  Thanks to Marijn Brand.
-
-  2013 09 22
-      - Fixed RT #88020. --converge was not working with wide characters.
-
-      - Fixed RT #78156. package NAMESPACE VERSION syntax not accepted.
-
-      - First attempt to fix RT #88588.  INDEX END tag change in pod2html breaks 
-        perltidy -html. I put in a patch which should work but I don't yet have
-        a way of testing it.
-
-  2013 08 06
-      - Fixed RT #87107, spelling
-
-  2013 08 05
-      - Fixed RT #87502, incorrect of parsing of smartmatch before hash brace
-  
-      - Added feature request RT #87330, trim whitespace after POD.
-        The flag -trp (--trim-pod) will trim trailing whitespace from lines of POD
-
-  2013 07 17
-      - Fixed RT #86929, #86930, missing lhs of assignment.
-
-      - Fixed RT #84922, moved pod from Tidy.pm into Tidy.pod
-
-  2012 12 07
-     - The flag -cab=n or --comma-arrow-breakpoints=n has been generalized
-       to give better control over breaking open short containers.  The
-       possible values are now:
-
-         n=0 break at all commas after =>  
-         n=1 stable: break at all commas after => if container is open,
-             EXCEPT FOR one-line containers
-         n=2 break at all commas after =>, BUT try to form the maximum
-             maximum one-line container lengths
-         n=3 do not treat commas after => specially at all 
-         n=4 break everything: like n=0 but also break a short container with
-             a => not followed by a comma
-         n=5 stable: like n=1 but ALSO break at open one-line containers (default)
-
-       New values n=4 and n=5 have been added to allow short blocks to be
-       broken open.  The new default is n=5, stable.  It should more closely
-       follow the breaks in the input file, and previously formatted code
-       should remain unchanged.  If this causes problems use -cab=1 to recover 
-       the former behavior.  Thanks to Tony Maszeroski for the suggestion.
-
-       To illustrate the need for the new options, if perltidy is given
-       the following code, then the old default (-cab=1) was to close up 
-       the 'index' container even if it was open in the source.  The new 
-       default (-cab=5) will keep it open if it was open in the source.
-
-        our $fancypkg = {
-            'ALL' => {
-                'index' => {
-                    'key' => 'value',
-                },
-                'alpine' => {
-                    'one'   => '+',
-                    'two'   => '+',
-                    'three' => '+',
-                },
-            }
-        };
-
-     - New debug flag --memoize (-mem).  This version contains a 
-       patch supplied by Jonathan Swartz which can significantly speed up
-       repeated calls to Perl::Tidy::perltidy in a single process by caching
-       the result of parsing the formatting parameters.  A factor of up to 10
-       speedup was achieved for masontidy (https://metacpan.org/module/masontidy).
-       The memoization patch is on by default but can be deactivated for 
-       testing with -nmem (or --no-memoize).
-
-     - New flag -tso (--tight-secret-operators) causes certain perl operator
-       sequences (secret operators) to be formatted "tightly" (without spaces).  
-       The most common of these are 0 +  and + 0 which become 0+ and +0.  The
-       operators currently modified by this flag are: 
-            =( )=  0+  +0  ()x!! ~~<>  ,=>
-       Suggested by by Philippe Bruhat. See https://metacpan.org/module/perlsecret
-       This flag is off by default.
-   
-     - New flag -vmll (--variable-maximum-line-length) makes the maximum
-       line length increase with the nesting depth of a line of code.  
-       Basically, it causes the length of leading whitespace to be ignored when
-       setting line breaks, so the formatting of a block of code is independent
-       of its nesting depth.  Try this option if you have deeply nested 
-       code or data structures, perhaps in conjunction with the -wc flag
-       described next.  The default is not todo this.
-     - New flag -wc=n (--whitespace-cycle=n) also addresses problems with
-       very deeply nested code and data structures.  When this parameter is
-       used and the nesting depth exceeds the value n, the leading whitespace 
-       will be reduced and start at 1 again.  The result is that deeply
-       nested blocks of code will shift back to the left. This occurs cyclically 
-       to any nesting depth.  This flag may be used either with or without -vmll.
-       The default is not to use this (-wc=0).
-
-     - Fixed RT #78764, error parsing smartmatch operator followed by anonymous
-       hash or array and then a ternary operator; two examples:
-
-        qr/3/ ~~ ['1234'] ? 1 : 0;
-        map { $_ ~~ [ '0', '1' ] ? 'x' : 'o' } @a;
-
-     - Fixed problem with specifying spaces around arrows using -wls='->'
-       and -wrs='->'.  Thanks to Alain Valleton for documenting this problem. 
-
-     - Implemented RT #53183, wishlist, lines of code with the same indentation
-       level which are contained with multiple stacked opening and closing tokens
-       (requested with flags -sot -sct) now have reduced indentation.  
-
-        # Default
-        $sender->MailMsg(
-            {
-                to      => $addr,
-                subject => $subject,
-                msg     => $body
-            }
-        );
-
-        # OLD: perltidy -sot -sct 
-        $sender->MailMsg( {
-                to      => $addr,
-                subject => $subject,
-                msg     => $body
-        } );
-
-        # NEW: perltidy -sot -sct 
-        $sender->MailMsg( {
-            to      => $addr,
-            subject => $subject,
-            msg     => $body
-        } );
-
-     - New flag -act=n (--all-containers-tightness=n) is an abbreviation for
-       -pt=n -sbt=n -bt=n -bbt=n, where n=0,1, or 2.  It simplifies input when all
-       containers have the same tightness. Using the same example:
-
-        # NEW: perltidy -sot -sct -act=2
-        $sender->MailMsg({
-            to      => $addr,
-            subject => $subject,
-            msg     => $body
-        });
-
-     - New flag -sac (--stack-all-containers) is an abbreviation for -sot -sct
-       This is part of wishlist item RT #53183. Using the same example again:
-
-        # NEW: perltidy -sac -act=2
-        $sender->MailMsg({
-            to      => $addr,
-            subject => $subject,
-            msg     => $body
-        });
-
-      - new flag -scbb (--stack-closing-block-brace) causes isolated closing 
-        block braces to stack as in the following example. (Wishlist item RT#73788)
-
-        DEFAULT:
-        for $w1 (@w1) {
-            for $w2 (@w2) {
-                for $w3 (@w3) {
-                    for $w4 (@w4) {
-                        push( @lines, "$w1 $w2 $w3 $w4\n" );
-                    }
-                }
-            }
-        }
-
-        perltidy -scbb:
-        for $w1 (@w1) {
-            for $w2 (@w2) {
-                for $w3 (@w3) {
-                    for $w4 (@w4) {
-                        push( @lines, "$w1 $w2 $w3 $w4\n" );
-                    } } } }
-
-       There is, at present, no flag to place these closing braces at the end
-       of the previous line. It seems difficult to develop good rules for 
-       doing this for a wide variety of code and data structures.
-
-     - Parameters defining block types may use a wildcard '*' to indicate
-       all block types.  Previously it was not possible to include bare blocks.
-     - A flag -sobb (--stack-opening-block-brace) has been introduced as an
-       alias for -bbvt=2 -bbvtl='*'.  So for example the following test code:
-
-       {{{{{{{ $testing }}}}}}}
-
-       cannot be formatted as above but can at least be kept vertically compact 
-       using perltidy -sobb -scbb
-
-       {   {   {   {   {   {   {   $testing
-                               } } } } } } }
-
-       Or even, perltidy -sobb -scbb -i=1 -bbt=2
-       {{{{{{{$testing
-             }}}}}}}
-
-
-     - Error message improved for conflicts due to -pbp; thanks to Djun Kim.
-  
-     - Fixed RT #80645, error parsing special array name '@$' when used as 
-       @{$} or $#{$}
-     - Eliminated the -chk debug flag which was included in version 20010406 to
-       do a one-time check for a bug with multi-line quotes.  It has not been
-       needed since then.
-
-     - Numerous other minor formatting improvements.
-
-  2012 07 14
-     - Added flag -iscl (--ignore-side-comment-lengths) which causes perltidy 
-       to ignore the length of side comments when setting line breaks, 
-       RT #71848.  The default is to include the length of side comments when
-       breaking lines to stay within the length prescribed by the -l=n
-       maximum line length parameter.  For example,
-
-         Default behavior on a single line with long side comment:
-            $vmsfile =~ s/;[\d\-]*$//
-              ;    # Clip off version number; we can use a newer version as well
-   
-         perltidy -iscl leaves the line intact:
-
-            $vmsfile =~ s/;[\d\-]*$//; # Clip off version number; we can use a newer version as well
-
-     - Fixed RT #78182, side effects with STDERR.  Error handling has been
-       revised and the documentation has been updated.  STDERR can now be 
-       redirected to a string reference, and perltidy now returns an 
-       error flag instead of calling die when input errors are detected. 
-       If the error flag is set then no tidied output was produced.
-       See man Perl::Tidy for an example.
-
-     - Fixed RT #78156, erroneous warning message for package VERSION syntax.
-
-     - Added abbreviations -conv (--converge) to simplify iteration control.
-       -conv is equivalent to -it=4 and will insure that the tidied code is
-       converged to its final state with the minimum number of iterations.
-
-     - Minor formatting modifications have been made to insure convergence.
-
-     - Simplified and hopefully improved the method for guessing the starting 
-       indentation level of entabbed code.  Added flag -dt=n (--default_tabsize=n) 
-       which might be helpful if the guessing method does not work well for
-       some editors.
-
-     - Added support for stacked labels, upper case X/B in hex and binary, and
-       CORE:: namespace.
-
-     - Eliminated warning messages for using keyword names as constants.
-
-  2012 07 01
-     - Corrected problem introduced by using a chomp on scalar references, RT #77978
-
-     - Added support for Perl 5.14 package block syntax, RT #78114.
-
-     - A convergence test is made if three or more iterations are requested with
-       the -it=n parameter to avoid wasting computer time.  Several hundred Mb of
-       code gleaned from the internet were searched with the results that: 
-        - It is unusual for two iterations to be required unless a major 
-          style change is being made. 
-        - Only one case has been found where three iterations were required.  
-        - No cases requiring four iterations have been found with this version.
-       For the previous version several cases where found the results could
-       oscillate between two semi-stable states. This version corrects this.
-
-       So if it is important that the code be converged it is okay to set -it=4
-       with this version and it will probably stop after the second iteration.
-
-     - Improved ability to identify and retain good line break points in the
-       input stream, such as at commas and equals. You can always tell 
-       perltidy to ignore old breakpoints with -iob.  
-
-     - Fixed glitch in which a terminal closing hash brace followed by semicolon
-       was not outdented back to the leading line depth like other closing
-       tokens.  Thanks to Keith Neargarder for noting this.
-
-         OLD:
-            my ( $pre, $post ) = @{
-                {
-                    "pp_anonlist" => [ "[", "]" ],
-                    "pp_anonhash" => [ "{", "}" ]
-                }->{ $kid->ppaddr }
-              };   # terminal brace
-
-         NEW:
-            my ( $pre, $post ) = @{
-                {
-                    "pp_anonlist" => [ "[", "]" ],
-                    "pp_anonhash" => [ "{", "}" ]
-                }->{ $kid->ppaddr }
-            };    # terminal brace
-
-     - Removed extra indentation given to trailing 'if' and 'unless' clauses 
-       without parentheses because this occasionally produced undesirable 
-       results.  This only applies where parens are not used after the if or
-       unless.
-
-        OLD:
-            return undef
-              unless my ( $who, $actions ) =
-                  $clause =~ /^($who_re)((?:$action_re)+)$/o; 
-    
-        NEW:
-            return undef
-              unless my ( $who, $actions ) =
-              $clause =~ /^($who_re)((?:$action_re)+)$/o;
-
-  2012 06 19
-     - Updated perltidy to handle all quote modifiers defined for perl 5 version 16.
-
-     - Side comment text in perltidyrc configuration files must now begin with
-       at least one space before the #.  Thus:
-
-       OK:
-         -l=78 # Max line width is 78 cols
-       BAD: 
-         -l=78# Max line width is 78 cols
-
-       This is probably true of almost all existing perltidyrc files, 
-       but if you get an error message about bad parameters
-       involving a '#' the first time you run this version, please check the side
-       comments in your perltidyrc file, and add a space before the # if necessary.
-       You can quickly see the contents your perltidyrc file, if any, with the
-       command:
-
-         perltidy -dpro
-
-       The reason for this change is that some parameters naturally involve
-       the # symbol, and this can get interpreted as a side comment unless the
-       parameter is quoted.  For example, to define -sphb=# it used to be necessary
-       to write
-         -sbcp='#'
-       to keep the # from becoming part of a comment.  This was causing 
-       trouble for new users.  Now it can also be written without quotes: 
-         -sbcp=#
-
-     - Fixed bug in processing some .perltidyrc files containing parameters with
-       an opening brace character, '{'.  For example the following was
-       incorrectly processed:
-          --static-block-comment-prefix="^#{2,}[^\s#]"
-       Thanks to pdagosto.
-
-     - Added flag -boa (--break-at-old-attribute-breakpoints) which retains
-       any existing line breaks at attribute separation ':'. This is now the
-       default, use -nboa to deactivate.  Thanks to Daphne Phister for the patch.  
-       For example, given the following code, the line breaks at the ':'s will be
-       retained:
-       
-                        my @field
-                          : field
-                          : Default(1)
-                          : Get('Name' => 'foo') : Set('Name');
-
-       whereas the previous version would have output a single line.  If
-       the attributes are on a single line then they will remain on a single line.
-     - Added new flags --blank-lines-before-subs=n (-blbs=n) and
-       --blank-lines-before-packages=n (-blbp=n) to put n blank lines before
-       subs and packages.  The old flag -bbs is now equivalent to -blbs=1 -blbp=1.
-       and -nbbs is equivalent to -blbs=0 -blbp=0. Requested by M. Schwern and
-       several others.
-
-     - Added feature -nsak='*' meaning no space between any keyword and opening 
-       paren.  This avoids listing entering a long list of keywords.  Requested
-       by M. Schwern.
-
-     - Added option to delete a backup of original file with in-place-modify (-b)
-       if there were no errors.  This can be requested with the flag -bext='/'.  
-       See documentation for details.  Requested by M. Schwern and others.
-
-     - Fixed bug where the module postfilter parameter was not applied when -b 
-       flag was used.  This was discovered during testing.
-
-     - Fixed in-place-modify (-b) to work with symbolic links to source files.
-       Thanks to Ted Johnson.
-
-     - Fixed bug where the Perl::Tidy module did not allow -b to be used 
-       in some cases.
-
-     - No extra blank line is added before a comment which follows
-       a short line ending in an opening token, for example like this:
-        OLD:
-                if (
-
-                    # unless we follow a blank or comment line
-                    $last_line_leading_type !~ /^[#b]$/
-                    ...
-
-        NEW:
-                if (
-                    # unless we follow a blank or comment line
-                    $last_line_leading_type !~ /^[#b]$/
-                    ...
-
-        The blank is not needed for readability in these cases because there
-        already is already space above the comment.  If a blank already 
-        exists there it will not be removed, so this change should not 
-        change code which has previously been formatted with perltidy. 
-        Thanks to R.W.Stauner.
-
-     - Likewise, no extra blank line is added above a comment consisting of a
-       single #, since nothing is gained in readability.
-
-     - Fixed error in which a blank line was removed after a #>>> directive. 
-       Thanks to Ricky Morse.
-
-     - Unnecessary semicolons after given/when/default blocks are now removed.
-
-     - Fixed bug where an unwanted blank line could be added before
-       pod text in __DATA__ or __END__ section.  Thanks to jidani.
-
-     - Changed exit flags from 1 to 0 to indicate success for -help, -version, 
-       and all -dump commands.  Also added -? as another way to dump the help.
-       Requested by Keith Neargarder.
-
-     - Fixed bug where .ERR and .LOG files were not written except for -it=2 or more
-
-     - Fixed bug where trailing blank lines at the end of a file were dropped when
-       -it>1.
-
-     - Fixed bug where a line occasionally ended with an extra space. This reduces
-       rhe number of instances where a second iteration gives a result different
-       from the first. 
-
-     - Updated documentation to note that the Tidy.pm module <stderr> parameter may
-       not be a reference to SCALAR or ARRAY; it must be a file.
-     - Syntax check with perl now work when the Tidy.pm module is processing
-       references to arrays and strings.  Thanks to Charles Alderman.
-
-     - Zero-length files are no longer processed due to concerns for data loss
-       due to side effects in some scenarios.
-
-     - block labels, if any, are now included in closing side comment text
-       when the -csc flag is used.  Suggested by Aaron.  For example, 
-       the label L102 in the following block is now included in the -csc text:
-
-          L102: for my $i ( 1 .. 10 ) {
-            ...
-          } ## end L102: for my $i ( 1 .. 10 )
-
-  2010 12 17
-     - added new flag -it=n or --iterations=n
-       This flag causes perltidy to do n complete iterations.  
-       For most purposes the default of n=1 should be satisfactory.  However n=2
-       can be useful when a major style change is being made, or when code is being
-       beautified on check-in to a source code control system.  The run time will be
-       approximately proportional to n, and it should seldom be necessary to use a
-       value greater than n=2.  Thanks to Jonathan Swartz
-
-     - A configuration file pathname begins with three dots, e.g.
-       ".../.perltidyrc", indicates that the file should be searched for starting
-       in the current directory and working upwards. This makes it easier to have
-       multiple projects each with their own .perltidyrc in their root directories.
-       Thanks to Jonathan Swartz for this patch.
-
-     - Added flag --notidy which disables all formatting and causes the input to be
-       copied unchanged.  This can be useful in conjunction with hierarchical
-       F<.perltidyrc> files to prevent unwanted tidying.
-       Thanks to Jonathan Swartz for this patch.
-
-     - Added prefilters and postfilters in the call to the Tidy.pm module.
-       Prefilters and postfilters. The prefilter is a code reference that 
-       will be applied to the source before tidying, and the postfilter 
-       is a code reference to the result before outputting.  
-
-       Thanks to Jonathan Swartz for this patch.  He writes:
-       This is useful for all manner of customizations. For example, I use
-       it to convert the 'method' keyword to 'sub' so that perltidy will work for
-       Method::Signature::Simple code:
-
-       Perl::Tidy::perltidy(
-          prefilter => sub { $_ = $_[0]; s/^method (.*)/sub $1 \#__METHOD/gm; return $_ },
-          postfilter => sub { $_ = $_[0]; s/^sub (.*?)\s* \#__METHOD/method $1/gm; return $_ }
-       );
-
-     - The starting indentation level of sections of code entabbed with -et=n
-       is correctly guessed if it was also produced with the same -et=n flag.  This
-       keeps the indentation stable on repeated formatting passes within an editor.
-       Thanks to Sam Kington and Glenn.
-
-     - Functions with prototype '&' had a space between the function and opening
-       peren.  This space now only occurs if the flag --space-function-paren (-sfp)
-       is set.  Thanks to Zrajm Akfohg.
-
-     - Patch to never put spaces around a bare word in braces beginning with ^ as in:
-         my $before = ${^PREMATCH};
-       even if requested with the -bt=0 flag because any spaces cause a syntax error in perl.
-       Thanks to Fabrice Dulanoy.
-
-  2009 06 16
-     - Allow configuration file to be 'perltidy.ini' for Windows systems.
-       i.e. C:\Documents and Settings\User\perltidy.ini
-       and added documentation for setting configuation file under Windows in man
-       page.  Thanks to Stuart Clark.
-
-     - Corrected problem of unwanted semicolons in hash ref within given/when code.
-      Thanks to Nelo Onyiah.
-
-     - added new flag -cscb or --closing-side-comments-balanced
-      When using closing-side-comments, and the closing-side-comment-maximum-text
-      limit is exceeded, then the comment text must be truncated.  Previous
-      versions of perltidy terminate with three dots, and this can still be
-      achieved with -ncscb:
-   
-       perltidy -csc -ncscb
-
-       } ## end foreach my $foo (sort { $b cmp $a ...
-   
-      However this causes a problem with older editors which cannot recognize
-      comments or are not configured to doso because they cannot "bounce" around in
-      the text correctly.  The B<-cscb> flag tries to help them by 
-      appending appropriate terminal balancing structure:
-   
-       perltidy -csc -cscb
-
-       } ## end foreach my $foo (sort { $b cmp $a ... })
-   
-      Since there is much to be gained and little to be lost by doing this,
-      the default is B<-cscb>.  Use B<-ncscb> if you do not want this.
-
-      Thanks to Daniel Becker for suggesting this option.
-
-     - After an isolated closing eval block the continuation indentation will be
-       removed so that the braces line up more like other blocks.  Thanks to Yves Orton.
-
-     OLD:
-        eval {
-            #STUFF;
-            1;    # return true
-          }  
-          or do {
-            #handle error
-          };
-
-     NEW:
-        eval {
-            #STUFF;
-            1;    # return true
-        } or do {
-            #handle error
-        };
-
-     -A new flag -asbl (or --opening-anonymous-sub-brace-on-new-line) has
-      been added to put the opening brace of anonymous sub's on a new line,
-      as in the following snippet:
-
-        my $code = sub
-        {
-            my $arg = shift;
-            return $arg->(@_);
-        };
-
-      This was not possible before because the -sbl flag only applies to named
-      subs. Thanks to Benjamin Krupp.
-
-     -Fix tokenization bug with the following snippet
-       print 'hi' if { x => 1, }->{x};
-      which resulted in a semicolon being added after the comma.  The workaround
-      was to use -nasc, but this is no longer necessary.  Thanks to Brian Duggan. 
-
-     -Fixed problem in which an incorrect error message could be triggered
-     by the (unusual) combination of parameters  -lp -i=0 -l=2 -ci=0 for
-     example.  Thanks to Richard Jelinek.
-
-     -A new flag --keep-old-blank-lines=n has been added to
-     give more control over the treatment of old blank lines in
-     a script.  The manual has been revised to discuss the new
-     flag and clarify the treatment of old blank lines.  Thanks
-     to Oliver Schaefer.
-
-  2007 12 05
-     -Improved support for perl 5.10: New quote modifier 'p', new block type UNITCHECK, 
-     new keyword break, improved formatting of given/when.
-
-     -Corrected tokenization bug of something like $var{-q}.
-
-     -Numerous minor formatting improvements.
-
-     -Corrected list of operators controlled by -baao -bbao to include
-       . : ? && || and or err xor
-
-     -Corrected very minor error in log file involving incorrect comment
-     regarding need for upper case of labels.  
-
-     -Fixed problem where perltidy could run for a very long time
-     when given certain non-perl text files.
-
-     -Line breaks in un-parenthesized lists now try to follow
-     line breaks in the input file rather than trying to fill
-     lines.  This usually works better, but if this causes
-     trouble you can use -iob to ignore any old line breaks.
-     Example for the following input snippet:
-
-        print
-        "conformability (Not the same dimension)\n",
-        "\t", $have, " is ", text_unit($hu), "\n",
-        "\t", $want, " is ", text_unit($wu), "\n",
-        ;
-
-      OLD:
-        print "conformability (Not the same dimension)\n", "\t", $have, " is ",
-          text_unit($hu), "\n", "\t", $want, " is ", text_unit($wu), "\n",;
-
-      NEW:
-        print "conformability (Not the same dimension)\n",
-          "\t", $have, " is ", text_unit($hu), "\n",
-          "\t", $want, " is ", text_unit($wu), "\n",
-          ;
-
-  2007 08 01
-     -Added -fpsc option (--fixed-position-side-comment). Thanks to Ueli Hugenschmidt. 
-     For example -fpsc=40 tells perltidy to put side comments in column 40
-     if possible.  
-
-     -Added -bbao and -baao options (--break-before-all-operators and
-     --break-after-all-operators) to simplify command lines and configuration
-     files.  These define an initial preference for breaking at operators which can
-     be modified with -wba and -wbb flags.  For example to break before all operators
-     except an = one could use --bbao -wba='=' rather than listing every
-     single perl operator (except =) on a -wbb flag.
-
-     -Added -kis option (--keep-interior-semicolons).  Use the B<-kis> flag
-     to prevent breaking at a semicolon if there was no break there in the
-     input file.  To illustrate, consider the following input lines:
-
-        dbmclose(%verb_delim); undef %verb_delim;
-        dbmclose(%expanded); undef %expanded;
-        dbmclose(%global); undef %global;
-
-     Normally these would be broken into six lines, but 
-     perltidy -kis gives:
-
-        dbmclose(%verb_delim); undef %verb_delim;
-        dbmclose(%expanded);   undef %expanded;
-        dbmclose(%global);     undef %global;
-     -Improved formatting of complex ternary statements, with indentation
-     of nested statements.  
-      OLD:
-        return defined( $cw->{Selected} )
-          ? (wantarray)
-          ? @{ $cw->{Selected} }
-          : $cw->{Selected}[0]
-          : undef;
-
-      NEW:
-        return defined( $cw->{Selected} )
-          ? (wantarray)
-              ? @{ $cw->{Selected} }
-              : $cw->{Selected}[0]
-          : undef;
-
-     -Text following un-parenthesized if/unless/while/until statements get a
-     full level of indentation.  Suggested by Jeff Armstorng and others. 
-     OLD:
-        return $ship->chargeWeapons("phaser-canon")
-          if $encounter->description eq 'klingon'
-          and $ship->firepower >= $encounter->firepower
-          and $location->status ne 'neutral';
-     NEW:
-        return $ship->chargeWeapons("phaser-canon")
-          if $encounter->description eq 'klingon'
-              and $ship->firepower >= $encounter->firepower
-              and $location->status ne 'neutral';
-
-  2007 05 08
-     -Fixed bug where #line directives were being indented.  Thanks to
-     Philippe Bruhat.
-
-  2007 05 04
-     -Fixed problem where an extra blank line was added after an =cut when either
-     (a) the =cut started (not stopped) a POD section, or (b) -mbl > 1. 
-     Thanks to J. Robert Ray and Bill Moseley.
-
-  2007 04 24
-     -ole (--output-line-ending) and -ple (--preserve-line-endings) should
-     now work on all systems rather than just unix systems. Thanks to Dan
-     Tyrell.
-
-     -Fixed problem of a warning issued for multiple subs for BEGIN subs
-     and other control subs. Thanks to Heiko Eissfeldt.
-     -Fixed problem where no space was introduced between a keyword or
-     bareword and a colon, such as:
-
-     ( ref($result) eq 'HASH' && !%$result ) ? undef: $result;
-
-     Thanks to Niek.
-
-     -Added a utility program 'break_long_quotes.pl' to the examples directory of
-     the distribution.  It breaks long quoted strings into a chain of concatenated
-     sub strings no longer than a selected length.  Suggested by Michael Renner as
-     a perltidy feature but was judged to be best done in a separate program.
-
-     -Updated docs to remove extra < and >= from list of tokens 
-     after which breaks are made by default.  Thanks to Bob Kleemann.
-
-     -Removed improper uses of $_ to avoid conflicts with external calls, giving
-     error message similar to:
-        Modification of a read-only value attempted at 
-        /usr/share/perl5/Perl/Tidy.pm line 6907.
-     Thanks to Michael Renner.
-
-     -Fixed problem when errorfile was not a plain filename or filehandle
-     in a call to Tidy.pm.  The call
-     perltidy(source => \$input, destination => \$output, errorfile => \$err);
-     gave the following error message:
-      Not a GLOB reference at /usr/share/perl5/Perl/Tidy.pm line 3827.
-     Thanks to Michael Renner and Phillipe Bruhat.
-
-     -Fixed problem where -sot would not stack an opening token followed by
-     a side comment.  Thanks to Jens Schicke.
-
-     -improved breakpoints in complex math and other long statements. Example:
-     OLD:
-        return
-          log($n) + 0.577215664901532 + ( 1 / ( 2 * $n ) ) -
-          ( 1 / ( 12 * ( $n**2 ) ) ) + ( 1 / ( 120 * ( $n**4 ) ) );
-     NEW:
-        return
-          log($n) + 0.577215664901532 +
-          ( 1 / ( 2 * $n ) ) -
-          ( 1 / ( 12 * ( $n**2 ) ) ) +
-          ( 1 / ( 120 * ( $n**4 ) ) );
-
-     -more robust vertical alignment of complex terminal else blocks and ternary
-     statements.
-
-  2006 07 19
-     -Eliminated bug where a here-doc invoked through an 'e' modifier on a pattern
-     replacement text was not recognized.  The tokenizer now recursively scans
-     replacement text (but does not reformat it).
-
-     -improved vertical alignment of terminal else blocks and ternary statements.
-      Thanks to Chris for the suggestion. 
-
-      OLD:
-        if    ( IsBitmap() ) { return GetBitmap(); }
-        elsif ( IsFiles() )  { return GetFiles(); }
-        else { return GetText(); }
-
-      NEW:
-        if    ( IsBitmap() ) { return GetBitmap(); }
-        elsif ( IsFiles() )  { return GetFiles(); }
-        else                 { return GetText(); }
-
-      OLD:
-        $which_search =
-            $opts{"t"} ? 'title'
-          : $opts{"s"} ? 'subject'
-          : $opts{"a"} ? 'author'
-          : 'title';
-
-      NEW:
-        $which_search =
-            $opts{"t"} ? 'title'
-          : $opts{"s"} ? 'subject'
-          : $opts{"a"} ? 'author'
-          :              'title';
-
-     -improved indentation of try/catch blocks and other externally defined
-     functions accepting a block argument.  Thanks to jae.
-
-     -Added support for Perl 5.10 features say and smartmatch.
-
-     -Added flag -pbp (--perl-best-practices) as an abbreviation for parameters
-     suggested in Damian Conway's "Perl Best Practices".  -pbp is the same as:
-
-        -l=78 -i=4 -ci=4 -st -se -vt=2 -cti=0 -pt=1 -bt=1 -sbt=1 -bbt=1 -nsfs -nolq
-        -wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = 
-              **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
-
-      Please note that the -st here restricts input to standard input; use
-      -nst if necessary to override.
-
-     -Eliminated some needless breaks at equals signs in -lp indentation.
-
-        OLD:
-            $c =
-              Math::Complex->make(LEFT + $x * (RIGHT - LEFT) / SIZE,
-                                  TOP + $y * (BOTTOM - TOP) / SIZE);
-        NEW:
-            $c = Math::Complex->make(LEFT + $x * (RIGHT - LEFT) / SIZE,
-                                     TOP + $y * (BOTTOM - TOP) / SIZE);
-
-     A break at an equals is sometimes useful for preventing complex statements 
-     from hitting the line length limit.  The decision to do this was 
-     over-eager in some cases and has been improved.  Thanks to Royce Reece.
-
-     -qw quotes contained in braces, square brackets, and parens are being
-     treated more like those containers as far as stacking of tokens.  Also
-     stack of closing tokens ending ');' will outdent to where the ');' would
-     have outdented if the closing stack is matched with a similar opening stack.
-
-      OLD: perltidy -soc -sct
-        __PACKAGE__->load_components(
-            qw(
-              PK::Auto
-              Core
-              )
-        );
-      NEW: perltidy -soc -sct
-        __PACKAGE__->load_components( qw(
-              PK::Auto
-              Core
-        ) );
-      Thanks to Aran Deltac
-
-     -Eliminated some undesirable or marginally desirable vertical alignments.
-     These include terminal colons, opening braces, and equals, and particularly
-     when just two lines would be aligned.
-
-     OLD:
-        my $accurate_timestamps = $Stamps{lnk};
-        my $has_link            = 
-            ...
-     NEW:
-        my $accurate_timestamps = $Stamps{lnk};
-        my $has_link =
-
-     -Corrected a problem with -mangle in which a space would be removed
-     between a keyword and variable beginning with ::.
-
-  2006 06 14
-     -Attribute argument lists are now correctly treated as quoted strings
-     and not formatted.  This is the most important update in this version.
-     Thanks to Borris Zentner, Greg Ferguson, Steve Kirkup.
-
-     -Updated to recognize the defined or operator, //, to be released in Perl 10.
-     Thanks to Sebastien Aperghis-Tramoni.
-
-     -A useful utility perltidyrc_dump.pl is included in the examples section.  It
-     will read any perltidyrc file and write it back out in a standard format
-     (though comments are lost).
-
-     -Added option to have perltidy read and return a hash with the contents of a
-     perltidyrc file.  This may be used by Leif Eriksen's tidyview code.  This
-     feature is used by the demonstration program 'perltidyrc_dump.pl' in the
-     examples directory.
-
-     -Improved error checking in perltidyrc files.  Unknown bare words were not
-     being caught.
-
-     -The --dump-options parameter now dumps parameters in the format required by a
-     perltidyrc file.
-
-     -V-Strings with underscores are now recognized.
-     For example: $v = v1.2_3; 
-
-     -cti=3 option added which gives one extra indentation level to closing 
-     tokens always.  This provides more predictable closing token placement
-     than cti=2.  If you are using cti=2 you might want to try cti=3.
-
-     -To identify all left-adjusted comments as static block comments, use C<-sbcp='^#'>.
-
-     -New parameters -fs, -fsb, -fse added to allow sections of code between #<<<
-     and #>>> to be passed through verbatim. This is enabled by default and turned
-     off by -nfs.  Flags -fsb and -fse allow other beginning and ending markers.
-     Thanks to Wolfgang Werner and Marion Berryman for suggesting this.  
-
-     -added flag -skp to put a space between all Perl keywords and following paren.
-     The default is to only do this for certain keywords.  Suggested by
-     H.Merijn Brand.
-
-     -added flag -sfp to put a space between a function name and following paren.
-     The default is not to do this.  Suggested by H.Merijn Brand.
-
-     -Added patch to avoid breaking GetOpt::Long::Configure set by calling program. 
-     Thanks to Philippe Bruhat.
-
-     -An error was fixed in which certain parameters in a .perltidyrc file given
-     without the equals sign were not recognized.  That is,
-     '--brace-tightness 0' gave an error but '--brace-tightness=0' worked
-     ok.  Thanks to Zac Hansen.
-
-     -An error preventing the -nwrs flag from working was corrected. Thanks to
-      Greg Ferguson.
-
-     -Corrected some alignment problems with entab option.
-
-     -A bug with the combination of -lp and -extrude was fixed (though this
-     combination doesn't really make sense).  The bug was that a line with
-     a single zero would be dropped.  Thanks to Cameron Hayne.
-
-     -Updated Windows detection code to avoid an undefined variable.
-     Thanks to Joe Yates and Russ Jones.
-
-     -Improved formatting for short trailing statements following a closing paren.
-     Thanks to Joe Matarazzo.
-
-     -The handling of the -icb (indent closing block braces) flag has been changed
-     slightly to provide more consistent and predictable formatting of complex
-     structures.  Instead of giving a closing block brace the indentation of the
-     previous line, it is now given one extra indentation level.  The two methods
-     give the same result if the previous line was a complete statement, as in this
-     example:
-
-            if ($task) {
-                yyy();
-                }    # -icb
-            else {
-                zzz();
-                }
-     The change also fixes a problem with empty blocks such as:
-
-        OLD, -icb:
-        elsif ($debug) {
-        }
-
-        NEW, -icb:
-        elsif ($debug) {
-            }
-
-     -A problem with -icb was fixed in which a closing brace was misplaced when
-     it followed a quote which spanned multiple lines.
-
-     -Some improved breakpoints for -wba='&& || and or'
-
-     -Fixed problem with misaligned cuddled else in complex statements
-     when the -bar flag was also used.  Thanks to Alex and Royce Reese.
-
-     -Corrected documentation to show that --outdent-long-comments is the default.
-     Thanks to Mario Lia.
-
-     -New flag -otr (opening-token-right) is similar to -bar (braces-always-right)
-     but applies to non-structural opening tokens.
-
-     -new flags -sot (stack-opening-token), -sct (stack-closing-token).
-     Suggested by Tony.
-
-  2003 10 21
-     -The default has been changed to not do syntax checking with perl.  
-       Use -syn if you want it.  Perltidy is very robust now, and the -syn
-       flag now causes more problems than it's worth because of BEGIN blocks
-       (which get executed with perl -c).  For example, perltidy will never
-       return when trying to beautify this code if -syn is used:
-
-            BEGIN { 1 while { }; }
-
-      Although this is an obvious error, perltidy is often run on untested
-      code which is more likely to have this sort of problem.  A more subtle
-      example is:
-
-            BEGIN { use FindBin; }
-
-      which may hang on some systems using -syn if a shared file system is
-      unavailable.
-
-     -Changed style -gnu to use -cti=1 instead of -cti=2 (see next item).
-      In most cases it looks better.  To recover the previous format, use
-      '-gnu -cti=2'
-
-     -Added flags -cti=n for finer control of closing token indentation.
-       -cti = 0 no extra indentation (default; same as -nicp)
-       -cti = 1 enough indentation so that the closing token
-            aligns with its opening token.
-       -cti = 2 one extra indentation level if the line has the form 
-              );   ];   or   };     (same as -icp).
-
-       The new option -cti=1 works well with -lp:
-
-       EXAMPLES:
-
-        # perltidy -lp -cti=1
-        @month_of_year = (
-                           'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                           'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-                         );
-
-        # perltidy -lp -cti=2
-        @month_of_year = (
-                           'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                           'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-                           );
-      This is backwards compatible with -icp. See revised manual for
-      details.  Suggested by Mike Pennington.
-  
-     -Added flag '--preserve-line-endings' or '-ple' to cause the output
-      line ending to be the same as in the input file, for unix, dos, 
-      or mac line endings.  Only works under unix. Suggested by 
-      Rainer Hochschild.
-
-     -Added flag '--output-line-ending=s' or '-ole=s' where s=dos or win,
-      unix, or mac.  Only works under unix.
-
-     -Files with Mac line endings should now be handled properly under unix
-      and dos without being passed through a converter.
-
-     -You may now include 'and', 'or', and 'xor' in the list following
-      '--want-break-after' to get line breaks after those keywords rather than
-      before them.  Suggested by Rainer Hochschild.
-
-     -Corrected problem with command line option for -vtc=n and -vt=n. The
-      equals sign was being eaten up by the Windows shell so perltidy didn't
-      see it.
-
-  2003 07 26
-     -Corrected cause of warning message with recent versions of Perl:
-        "Possible precedence problem on bitwise & operator at ..."
-      Thanks to Jim Files.
-
-     -fixed bug with -html with '=for pod2html' sections, in which code/pod
-     output order was incorrect.  Thanks to Tassilo von Parseval.
-
-     -fixed bug when the -html flag is used, in which the following error
-     message, plus others, appear:
-         did not see <body> in pod2html output
-     This was caused by a change in the format of html output by pod2html
-     VERSION 1.04 (included with perl 5.8).  Thanks to Tassilo von Parseval.
-
-     -Fixed bug where an __END__ statement would be mistaken for a label
-     if it is immediately followed by a line with a leading colon. Thanks
-     to John Bayes.
-     -Implemented guessing logic for brace types when it is ambiguous.  This
-     has been on the TODO list a long time.  Thanks to Boris Zentner for
-     an example.
-
-     -Long options may now be negated either as '--nolong-option' 
-     or '--no-long-option'.  Thanks to Philip Newton for the suggestion.
-
-     -added flag --html-entities or -hent which controls the use of
-     Html::Entities for html formatting.  Use --nohtml-entities or -nhent to
-     prevent the use of Html::Entities to encode special symbols.  The
-     default is -hent.  Html::Entities when formatting perl text to escape
-     special symbols.  This may or may not be the right thing to do,
-     depending on browser/language combinations.  Thanks to Burak Gursoy for
-     this suggestion.
-
-     -Bareword strings with leading '-', like, '-foo' now count as 1 token
-     for horizontal tightness.  This way $a{'-foo'}, $a{foo}, and $a{-foo}
-     are now all treated similarly.  Thus, by default, OLD: $a{ -foo } will
-     now be NEW: $a{-foo}.  Suggested by Mark Olesen.
-
-     -added 2 new flags to control spaces between keywords and opening parens:
-       -sak=s  or --space-after-keyword=s,  and
-       -nsak=s or --nospace-after-keyword=s, where 's' is a list of keywords.
-
-     The new default list of keywords which get a space is:
-
-       "my local our and or eq ne if else elsif until unless while for foreach
-         return switch case given when"
-
-     Use -sak=s and -nsak=s to add and remove keywords from this list,
-        respectively.
-
-     Explanation: Stephen Hildrey noted that perltidy was being inconsistent
-     in placing spaces between keywords and opening parens, and sent a patch
-     to give user control over this.  The above list was selected as being
-     a reasonable default keyword list.  Previously, perltidy
-     had a hardwired list which also included these keywords:
-
-            push pop shift unshift join split die
-
-     but did not have 'our'.  Example: if you prefer to make perltidy behave
-     exactly as before, you can include the following two lines in your
-     .perltidyrc file: 
-
-       -sak="push pop local shift unshift join split die"
-       -nsak="our"
-
-     -Corrected html error in .toc file when -frm -html is used (extra ");
-      browsers were tolerant of it.
-
-     -Improved alignment of chains of binary and ?/: operators. Example:
-      OLD:
-        $leapyear =
-          $year % 4     ? 0
-          : $year % 100 ? 1
-          : $year % 400 ? 0
-          : 1;
-      NEW:
-        $leapyear =
-            $year % 4   ? 0
-          : $year % 100 ? 1
-          : $year % 400 ? 0
-          : 1;
-
-     -improved breakpoint choices involving '->'
-
-     -Corrected tokenization of things like ${#}. For example,
-      ${#} is valid, but ${# } is a syntax error.
-
-     -Corrected minor tokenization errors with indirect object notation.
-      For example, 'new A::()' works now.
-
-     -Minor tokenization improvements; all perl code distributed with perl 5.8 
-      seems to be parsed correctly except for one instance (lextest.t) 
-      of the known bug.
-
-  2002 11 30
-     -Implemented scalar attributes.  Thanks to Sean Tobin for noting this.
-
-     -Fixed glitch introduced in previous release where -pre option
-     was not outputting a leading html <pre> tag.
-
-     -Numerous minor improvements in vertical alignment, including the following:
-
-     -Improved alignment of opening braces in many cases.  Needed for improved
-     switch/case formatting, and also suggested by Mark Olesen for sort/map/grep
-     formatting.  For example:
-
-      OLD:
-        @modified =
-          map { $_->[0] }
-          sort { $a->[1] <=> $b->[1] }
-          map { [ $_, -M ] } @filenames;
-
-      NEW:
-        @modified =
-          map  { $_->[0] }
-          sort { $a->[1] <=> $b->[1] }
-          map  { [ $_, -M ] } @filenames;
-
-     -Eliminated alignments across unrelated statements. Example:
-      OLD:
-        $borrowerinfo->configure( -state => 'disabled' );
-        $borrowerinfo->grid( -col        => 1, -row => 0, -sticky => 'w' );
-
-      NEW:  
-        $borrowerinfo->configure( -state => 'disabled' );
-        $borrowerinfo->grid( -col => 1, -row => 0, -sticky => 'w' );
-
-      Thanks to Mark Olesen for suggesting this.
-
-     -Improved alignement of '='s in certain cases.
-      Thanks to Norbert Gruener for sending an example.
-
-     -Outdent-long-comments (-olc) has been re-instated as a default, since
-      it works much better now.  Use -nolc if you want to prevent it.
-
-     -Added check for 'perltidy file.pl -o file.pl', which causes file.pl
-     to be lost. (The -b option should be used instead). Thanks to mreister
-     for reporting this problem.
-
-  2002 11 06
-     -Switch/case or given/when syntax is now recognized.  Its vertical alignment
-     is not great yet, but it parses ok.  The words 'switch', 'case', 'given',
-     and 'when' are now treated as keywords.  If this causes trouble with older
-     code, we could introduce a switch to deactivate it.  Thanks to Stan Brown
-     and Jochen Schneider for recommending this.
-
-     -Corrected error parsing sub attributes with call parameters.
-     Thanks to Marc Kerr for catching this.
-
-     -Sub prototypes no longer need to be on the same line as sub names.  
-
-     -a new flag -frm or --frames will cause html output to be in a
-     frame, with table of contents in the left panel and formatted source
-     in the right panel.  Try 'perltidy -html -frm somemodule.pm' for example.
-
-     -The new default for -html formatting is to pass the pod through Pod::Html.
-     The result is syntax colored code within your pod documents. This can be
-     deactivated with -npod.  Thanks to those who have written to discuss this,
-     particularly Mark Olesen and Hugh Myers.
-
-     -the -olc (--outdent-long-comments) option works much better.  It now outdents
-     groups of consecutive comments together, and by just the amount needed to
-     avoid having any one line exceeding the maximum line length.
-
-     -block comments are now trimmed of trailing whitespace.
-
-     -if a directory specified with -opath does not exist, it will be created.
-
-     -a table of contents to packages and subs is output when -html is used.
-     Use -ntoc to prevent this. 
-
-     -fixed an unusual bug in which a 'for' statement following a 'format'
-     statement was not correctly tokenized.  Thanks to Boris Zentner for
-     catching this.
-
-     -Tidy.pm is no longer dependent on modules IO::Scalar and IO::ScalarArray.  
-     There were some speed issues.  Suggested by Joerg Walter.
-
-     -The treatment of quoted wildcards (file globs) is now system-independent. 
-     For example
-
-        perltidy 'b*x.p[lm]'
-
-     would match box.pl, box.pm, brinx.pm under any operating system.  Of
-     course, anything unquoted will be subject to expansion by any shell.
-
-     -default color for keywords under -html changed from 
-     SaddleBrown (#8B4513) to magenta4 (#8B008B).
-
-     -fixed an arg parsing glitch in which something like:
-       perltidy quick-help
-     would trigger the help message and exit, rather than operate on the
-     file 'quick-help'.
-
-  2002 09 22
-     -New option '-b' or '--backup-and-modify-in-place' will cause perltidy to
-     overwrite the original file with the tidied output file.  The original
-     file will be saved with a '.bak' extension (which can be changed with
-     -bext=s).  Thanks to Rudi Farkas for the suggestion.
-
-     -An index to all subs is included at the top of -html output, unless
-     only the <pre> section is written.
-
-     -Anchor lines of the form <a name="mysub"></a> are now inserted at key points
-     in html output, such as before sub definitions, for the convenience of
-     postprocessing scripts.  Suggested by Howard Owen.
-
-     -The cuddled-else (-ce) flag now also makes cuddled continues, like
-     this:
-
-        while ( ( $pack, $file, $line ) = caller( $i++ ) ) {
-           # bla bla
-        } continue {
-            $prevpack = $pack;
-        }
-
-     Suggested by Simon Perreault.  
-
-     -Fixed bug in which an extra blank line was added before an =head or 
-     similar pod line after an __END__ or __DATA__ line each time 
-     perltidy was run.  Also, an extra blank was being added after
-     a terminal =cut.  Thanks to Mike Birdsall for reporting this.
-
-  2002 08 26
-     -Fixed bug in which space was inserted in a hyphenated hash key:
-        my $val = $myhash{USER-NAME};
-      was converted to:
-        my $val = $myhash{USER -NAME}; 
-      Thanks to an anonymous bug reporter at sourceforge.
-
-     -Fixed problem with the '-io' ('--indent-only') where all lines 
-      were double spaced.  Thanks to Nick Andrew for reporting this bug.
-
-     -Fixed tokenization error in which something like '-e1' was 
-      parsed as a number. 
-
-     -Corrected a rare problem involving older perl versions, in which 
-      a line break before a bareword caused problems with 'use strict'.
-      Thanks to Wolfgang Weisselberg for noting this.
-
-     -More syntax error checking added.
-
-     -Outdenting labels (-ola) has been made the default, in order to follow the
-      perlstyle guidelines better.  It's probably a good idea in general, but
-      if you do not want this, use -nola in your .perltidyrc file.
-  
-     -Updated rules for padding logical expressions to include more cases.
-      Thanks to Wolfgang Weisselberg for helpful discussions.
-
-     -Added new flag -osbc (--outdent-static-block-comments) which will
-      outdent static block comments by 2 spaces (or whatever -ci equals).
-      Requested by Jon Robison.
-
-  2002 04 25
-     -Corrected a bug, introduced in the previous release, in which some
-      closing side comments (-csc) could have incorrect text.  This is
-      annoying but will be correct the next time perltidy is run with -csc.
-
-     -Implemented XHTML patch submitted by Ville Skyttä.
-
-     -Fixed bug where whitespace was being removed between 'Bar' and '()' 
-      in a use statement like:
-
-           use Foo::Bar ();
-
-      Thanks to Ville Skyttä for reporting this.
-
-     -Whenever possible, if a logical expression is broken with leading
-      '&&', '||', 'and', or 'or', then the leading line will be padded
-      with additional space to produce alignment.  This has been on the
-      todo list for a long time; thanks to Frank Steinhauer for reminding
-      me to do it.  Notice the first line after the open parens here:
-
-            OLD: perltidy -lp
-            if (
-                 !param("rules.to.$linecount")
-                 && !param("rules.from.$linecount")
-                 && !param("rules.subject.$linecount")
-                 && !(
-                       param("rules.fieldname.$linecount")
-                       && param("rules.fieldval.$linecount")
-                 )
-                 && !param("rules.size.$linecount")
-                 && !param("rules.custom.$linecount")
-              )
-
-            NEW: perltidy -lp
-            if (
-                    !param("rules.to.$linecount")
-                 && !param("rules.from.$linecount")
-                 && !param("rules.subject.$linecount")
-                 && !(
-                          param("rules.fieldname.$linecount")
-                       && param("rules.fieldval.$linecount")
-                 )
-                 && !param("rules.size.$linecount")
-                 && !param("rules.custom.$linecount")
-              )
-
-  2002 04 16
-     -Corrected a mistokenization of variables for a package with a name
-      equal to a perl keyword.  For example: 
-
-         my::qx();
-         package my;
-         sub qx{print "Hello from my::qx\n";}
-
-      In this case, the leading 'my' was mistokenized as a keyword, and a
-      space was being place between 'my' and '::'.  This has been
-      corrected.  Thanks to Martin Sluka for discovering this. 
-
-     -A new flag -bol (--break-at-old-logic-breakpoints)
-      has been added to control whether containers with logical expressions
-      should be broken open.  This is the default.
-
-     -A new flag -bok (--break-at-old-keyword-breakpoints)
-      has been added to follow breaks at old keywords which return lists,
-      such as sort and map.  This is the default.
-
-     -A new flag -bot (--break-at-old-trinary-breakpoints) has been added to
-      follow breaks at trinary (conditional) operators.  This is the default.
-
-     -A new flag -cab=n has been added to control breaks at commas after
-      '=>' tokens.  The default is n=1, meaning break unless this breaks
-      open an existing on-line container.
-
-     -A new flag -boc has been added to allow existing list formatting
-      to be retained.  (--break-at-old-comma-breakpoints).  See updated manual.
-
-     -A new flag -iob (--ignore-old-breakpoints) has been added to
-      prevent the locations of old breakpoints from influencing the output
-      format.
-
-     -Corrected problem where nested parentheses were not getting full
-      indentation.  This has been on the todo list for some time; thanks 
-      to Axel Rose for a snippet demonstrating this issue.
-
-                OLD: inner list is not indented
-                $this->sendnumeric(
-                    $this->server,
-                    (
-                      $ret->name,        $user->username, $user->host,
-                    $user->server->name, $user->nick,     "H"
-                    ),
-                );
-
-                NEW:
-                $this->sendnumeric(
-                    $this->server,
-                    (
-                        $ret->name,          $user->username, $user->host,
-                        $user->server->name, $user->nick,     "H"
-                    ),
-                );
-
-     -Code cleaned up by removing the following unused, undocumented flags.
-      They should not be in any .perltidyrc files because they were just
-      experimental flags which were never documented.  Most of them placed
-      artificial limits on spaces, and Wolfgang Weisselberg convinced me that
-      most of them they do more harm than good by causing unexpected results.
-
-      --maximum-continuation-indentation (-mci)
-      --maximum-whitespace-columns
-      --maximum-space-to-comment (-xsc)
-      --big-space-jump (-bsj)
-
-     -Pod file 'perltidy.pod' has been appended to the script 'perltidy', and
-      Tidy.pod has been append to the module 'Tidy.pm'.  Older MakeMaker's
-      were having trouble.
-     -A new flag -isbc has been added for more control on comments. This flag
-      has the effect that if there is no leading space on the line, then the
-      comment will not be indented, and otherwise it may be.  If both -ibc and
-      -isbc are set, then -isbc takes priority.  Thanks to Frank Steinhauer
-      for suggesting this.
-
-     -A new document 'stylekey.pod' has been created to quickly guide new users
-      through the maze of perltidy style parameters.  An html version is 
-      on the perltidy web page.  Take a look! It should be very helpful.
-
-     -Parameters for controlling 'vertical tightness' have been added:
-      -vt and -vtc are the main controls, but finer control is provided
-      with -pvt, -pcvt, -bvt, -bcvt, -sbvt, -sbcvt.  Block brace vertical
-      tightness controls have also been added.
-      See updated manual and also see 'stylekey.pod'. Simple examples:
-
-        # perltidy -lp -vt=1 -vtc=1
-        @month_of_year = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                           'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
-
-        # perltidy -lp -vt=1 -vtc=0
-        @month_of_year = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                           'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-        );
-
-     -Lists which do not format well in uniform columns are now better
-      identified and formated.
-
-        OLD:
-        return $c->create( 'polygon', $x, $y, $x + $ruler_info{'size'},
-            $y + $ruler_info{'size'}, $x - $ruler_info{'size'},
-            $y + $ruler_info{'size'} );
-
-        NEW:
-        return $c->create(
-            'polygon', $x, $y,
-            $x + $ruler_info{'size'},
-            $y + $ruler_info{'size'},
-            $x - $ruler_info{'size'},
-            $y + $ruler_info{'size'}
-        );
-
-        OLD:
-          radlablist($f1, pad('Initial', $p), $b->{Init}->get_panel_ref, 'None ',
-                     'None', 'Default', 'Default', 'Simple', 'Simple');
-        NEW:
-          radlablist($f1,
-                     pad('Initial', $p),
-                     $b->{Init}->get_panel_ref,
-                     'None ', 'None', 'Default', 'Default', 'Simple', 'Simple');
-
-     -Corrected problem where an incorrect html filename was generated for 
-      external calls to Tidy.pm module.  Fixed incorrect html title when
-      Tidy.pm is called with IO::Scalar or IO::Array source.
-
-     -Output file permissons are now set as follows.  An output script file
-      gets the same permission as the input file, except that owner
-      read/write permission is added (otherwise, perltidy could not be
-      rerun).  Html output files use system defaults.  Previously chmod 0755
-      was used in all cases.  Thanks to Mark Olesen for bringing this up.
-
-     -Missing semicolons will not be added in multi-line blocks of type
-      sort, map, or grep.  This brings perltidy into closer agreement
-      with common practice.  Of course, you can still put semicolons 
-      there if you like.  Thanks to Simon Perreault for a discussion of this.
-
-     -Most instances of extra semicolons are now deleted.  This is
-      particularly important if the -csc option is used.  Thanks to Wolfgang
-      Weisselberg for noting this.  For example, the following line
-      (produced by 'h2xs' :) has an extra semicolon which will now be
-      removed:
-
-         BEGIN { plan tests => 1 };
-
-     -New parameter -csce (--closing-side-comment-else-flag) can be used
-      to control what text is appended to 'else' and 'elsif' blocks.
-      Default is to just add leading 'if' text to an 'else'.  See manual.
-
-     -The -csc option now labels 'else' blocks with additinal information
-      from the opening if statement and elsif statements, if space.
-      Thanks to Wolfgang Weisselberg for suggesting this.
-
-     -The -csc option will now remove any old closing side comments
-      below the line interval threshold. Thanks to Wolfgang Weisselberg for
-      suggesting this.
-
-     -The abbreviation feature, which was broken in the previous version,
-      is now fixed.  Thanks to Michael Cartmell for noting this.
-
-     -Vertical alignment is now done for '||='  .. somehow this was 
-      overlooked.
-
-  2002 02 25
-     -This version uses modules for the first time, and a standard perl
-      Makefile.PL has been supplied.  However, perltidy may still be
-      installed as a single script, without modules.  See INSTALL for
-      details.
-
-     -The man page 'perl2web' has been merged back into the main 'perltidy'
-      man page to simplify installation.  So you may remove that man page
-      if you have an older installation.
-
-     -Added patch from Axel Rose for MacPerl.  The patch prompts the user
-      for command line arguments before calling the module 
-      Perl::Tidy::perltidy.
-
-     -Corrected bug with '-bar' which was introduced in the previous
-      version.  A closing block brace was being indented.  Thanks to
-      Alexandros M Manoussakis for reporting this.
-
-     -New parameter '--entab-leading-whitespace=n', or '-et=n', has been
-      added for those who prefer tabs.  This behaves different from the
-      existing '-t' parameter; see updated man page.  Suggested by Mark
-      Olesen.
-
-     -New parameter '--perl-syntax-check-flags=s'  or '-pcsf=s' can be
-      used to change the flags passed to perltidy in a syntax check.
-      See updated man page.  Suggested by Mark Olesen. 
-
-     -New parameter '--output-path=s'  or '-opath=s' will cause output
-      files to be placed in directory s.  See updated man page.  Thanks for
-      Mark Olesen for suggesting this.
-
-     -New parameter --dump-profile (or -dpro) will dump to
-      standard output information about the search for a
-      configuration file, the name of whatever configuration file
-      is selected, and its contents.  This should help debugging
-      config files, especially on different Windows systems.
-
-     -The -w parameter now notes possible errors of the form:
-
-            $comment = s/^\s*(\S+)\..*/$1/;   # trim whitespace
-
-     -Corrections added for a leading ':' and for leaving a leading 'tcsh'
-      line untouched.  Mark Olesen reported that lines of this form were
-      accepted by perl but not by perltidy:
-
-            : # use -*- perl -*-
-            eval 'exec perl -wS $0 "$@"'  # shell should exec 'perl'
-            unless 1;                     # but Perl should skip this one
-
-      Perl will silently swallow a leading colon on line 1 of a
-      script, and now perltidy will do likewise.  For example,
-      this is a valid script, provided that it is the first line,
-      but not otherwise:
-
-            : print "Hello World\n";
-  
-      Also, perltidy will now mark a first line with leading ':' followed by
-      '#' as type SYSTEM (just as a #!  line), not to be formatted.
-
-     -List formatting improved for certain lists with special
-      initial terms, such as occur with 'printf', 'sprintf',
-      'push', 'pack', 'join', 'chmod'.  The special initial term is
-      now placed on a line by itself.  For example, perltidy -gnu
-
-         OLD:
-            $Addr = pack(
-                         "C4",                hex($SourceAddr[0]),
-                         hex($SourceAddr[1]), hex($SourceAddr[2]),
-                         hex($SourceAddr[3])
-                         );
-
-         NEW:
-            $Addr = pack("C4",
-                         hex($SourceAddr[0]), hex($SourceAddr[1]),
-                         hex($SourceAddr[2]), hex($SourceAddr[3]));
-
-          OLD:
-                push (
-                      @{$$self{states}}, '64', '66', '68',
-                      '70',              '72', '74', '76',
-                      '78',              '80', '82', '84',
-                      '86',              '88', '90', '92',
-                      '94',              '96', '98', '100',
-                      '102',             '104'
-                      );
-
-          NEW:
-                push (
-                      @{$$self{states}},
-                      '64', '66', '68', '70', '72',  '74',  '76',
-                      '78', '80', '82', '84', '86',  '88',  '90',
-                      '92', '94', '96', '98', '100', '102', '104'
-                      );
-
-     -Lists of complex items, such as matricies, are now detected
-      and displayed with just one item per row:
-
-        OLD:
-        $this->{'CURRENT'}{'gfx'}{'MatrixSkew'} = Text::PDF::API::Matrix->new(
-            [ 1, tan( deg2rad($a) ), 0 ], [ tan( deg2rad($b) ), 1, 0 ],
-            [ 0, 0, 1 ]
-        );
-
-        NEW:
-        $this->{'CURRENT'}{'gfx'}{'MatrixSkew'} = Text::PDF::API::Matrix->new(
-            [ 1,                  tan( deg2rad($a) ), 0 ],
-            [ tan( deg2rad($b) ), 1,                  0 ],
-            [ 0,                  0,                  1 ]
-        );
-
-     -The perl syntax check will be turned off for now when input is from
-      standard input or standard output.  The reason is that this requires
-      temporary files, which has produced far too many problems during
-      Windows testing.  For example, the POSIX module under Windows XP/2000
-      creates temporary names in the root directory, to which only the
-      administrator should have permission to write.
-
-     -Merged patch sent by Yves Orton to handle appropriate
-      configuration file locations for different Windows varieties
-      (2000, NT, Me, XP, 95, 98).
-
-     -Added patch to properly handle a for/foreach loop without
-      parens around a list represented as a qw.  I didn't know this
-      was possible until Wolfgang Weisselberg pointed it out:
-
-            foreach my $key qw\Uno Due Tres Quadro\ {
-                print "Set $key\n";
-            }
-
-      But Perl will give a syntax error without the $ variable; ie this will
-      not work:
-
-            foreach qw\Uno Due Tres Quadro\ {
-                print "Set $_\n";
-            }
-
-     -Merged Windows version detection code sent by Yves Orton.  Perltidy
-      now automatically turns off syntax checking for Win 9x/ME versions,
-      and this has solved a lot of robustness problems.  These systems 
-      cannot reliably handle backtick operators.  See man page for
-      details.
-  
-     -Merged VMS filename handling patch sent by Michael Cartmell.  (Invalid
-      output filenames were being created in some cases). 
-
-     -Numerous minor improvements have been made for -lp style indentation.
-
-     -Long C-style 'for' expressions will be broken after each ';'.   
-
-      'perltidy -gnu' gives:
-
-        OLD:
-        for ($status = $db->seq($key, $value, R_CURSOR()) ; $status == 0
-             and $key eq $origkey ; $status = $db->seq($key, $value, R_NEXT())) 
-
-        NEW:
-        for ($status = $db->seq($key, $value, R_CURSOR()) ;
-             $status == 0 and $key eq $origkey ;
-             $status = $db->seq($key, $value, R_NEXT()))
-
-     -For the -lp option, a single long term within parens
-      (without commas) now has better alignment.  For example,
-      perltidy -gnu
-
-                OLD:
-                $self->throw("Must specify a known host, not $location,"
-                      . " possible values ("
-                      . join (",", sort keys %hosts) . ")");
-
-                NEW:
-                $self->throw("Must specify a known host, not $location,"
-                             . " possible values ("
-                             . join (",", sort keys %hosts) . ")");
-
-  2001 12 31
-     -This version is about 20 percent faster than the previous
-      version as a result of optimization work.  The largest gain
-      came from switching to a dispatch hash table in the
-      tokenizer.
-
-     -perltidy -html will check to see if HTML::Entities is
-      installed, and if so, it will use it to encode unsafe
-      characters.
-
-     -Added flag -oext=ext to change the output file extension to
-      be different from the default ('tdy' or 'html').  For
-      example:
-
-        perltidy -html -oext=htm filename
-
-     will produce filename.htm
-
-     -Added flag -cscw to issue warnings if a closing side comment would replace
-     an existing, different side comments.  See the man page for details.
-     Thanks to Peter Masiar for helpful discussions.
-
-     -Corrected tokenization error of signed hex/octal/binary numbers. For
-     example, the first hex number below would have been parsed correctly
-     but the second one was not:
-        if ( ( $tmp >= 0x80_00_00 ) || ( $tmp < -0x80_00_00 ) ) { }
-
-     -'**=' was incorrectly tokenized as '**' and '='.  This only
-         caused a problem with the -extrude opton.
-
-     -Corrected a divide by zero when -extrude option is used
-
-     -The flag -w will now contain all errors reported by 'perl -c' on the
-     input file, but otherwise they are not reported.  The reason is that
-     perl will report lots of problems and syntax errors which are not of
-     interest when only a small snippet is being formatted (such as missing
-     modules and unknown bare words).  Perltidy will always report all
-     significant syntax errors that it finds, such as unbalanced braces,
-     unless the -q (quiet) flag is set.
-
-     -Merged modifications created by Hugh Myers into perltidy.
-      These include a 'streamhandle' routine which allows perltidy
-      as a module to operate on input and output arrays and strings
-      in addition to files.  Documentation and new packaging as a
-      module should be ready early next year; This is an elegant,
-      powerful update; many thanks to Hugh for contributing it.
-
-  2001 11 28
-     -added a tentative patch which tries to keep any existing breakpoints
-     at lines with leading keywords map,sort,eval,grep. The idea is to
-     improve formatting of sequences of list operations, as in a schwartzian
-     transform.  Example:
-
-        INPUT:
-        my @sorted = map { $_->[0] }
-                     sort { $a->[1] <=> $b->[1] }
-                     map { [ $_, rand ] } @list;
-
-        OLD:
-        my @sorted =
-          map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, rand ] } @list;
-
-        NEW:
-        my @sorted = map { $_->[0] }
-          sort { $a->[1] <=> $b->[1] }
-          map { [ $_, rand ] } @list;
-
-      The new alignment is not as nice as the input, but this is an improvement.
-      Thanks to Yves Orton for this suggestion.
-
-     -modified indentation logic so that a line with leading opening paren,
-     brace, or square bracket will never have less indentation than the
-     line with the corresponding opening token.  Here's a simple example:
-
-        OLD:
-            $mw->Button(
-                -text    => "New Document",
-                -command => \&new_document
-              )->pack(
-                -side   => 'bottom',
-                -anchor => 'e'
-            );
-
-        Note how the closing ');' is lined up with the first line, even
-        though it closes a paren in the 'pack' line.  That seems wrong.
-        NEW:
-            $mw->Button(
-                -text    => "New Document",
-                -command => \&new_document
-              )->pack(
-                -side   => 'bottom',
-                -anchor => 'e'
-              );
-
-       This seems nicer: you can up-arrow with an editor and arrive at the
-       opening 'pack' line.
-     -corrected minor glitch in which cuddled else (-ce) did not get applied
-     to an 'unless' block, which should look like this:
-
-            unless ($test) {
-
-            } else {
-
-            }
-
-      Thanks to Jeremy Mates for reporting this.
-
-     -The man page has been reorganized to parameters easier to find.
-     -Added check for multiple definitions of same subroutine.  It is easy
-      to introduce this problem when cutting and pasting. Perl does not
-      complain about it, but it can lead to disaster.
-
-     -The command -pro=filename  or -profile=filename may be used to specify a
-      configuration file which will override the default name of .perltidyrc.
-      There must not be a space on either side of the '=' sign.  I needed
-      this to be able to easily test perltidy with a variety of different
-      configuration files.
-
-     -Side comment alignment has been improved somewhat across frequent level
-      changes, as in short if/else blocks.  Thanks to Wolfgang Weisselberg 
-      for pointing out this problem.  For example:
-    
-        OLD:
-        if ( ref $self ) {    # Called as a method
-            $format = shift;
-        }
-        else {    # Regular procedure call
-            $format = $self;
-            undef $self;
-        }
-
-        NEW:
-        if ( ref $self ) {    # Called as a method
-            $format = shift;
-        }
-        else {                # Regular procedure call
-            $format = $self;
-            undef $self;
-        }
-
-     -New command -ssc (--static-side-comment) and related command allows
-      side comments to be spaced close to preceding character.  This is
-      useful for displaying commented code as side comments.
-
-     -New command -csc (--closing-side-comment) and several related
-      commands allow comments to be added to (and deleted from) any or all
-      closing block braces.  This can be useful if you have to maintain large
-      programs, especially those that you didn't write.  See updated man page.
-      Thanks to Peter Masiar for this suggestion.  For a simple example:
-
-            perltidy -csc
-
-            sub foo {
-                if ( !defined( $_[0] ) ) {
-                    print("Hello, World\n");
-                }
-                else {
-                    print( $_[0], "\n" );
-                }
-            } ## end sub foo
-
-      This added '## end sub foo' to the closing brace.  
-      To remove it, perltidy -ncsc.
-
-     -New commands -ola, for outdenting labels, and -okw, for outdenting
-      selected control keywords, were implemented.  See the perltidy man
-      page for details.  Thanks to Peter Masiar for this suggestion.
-
-     -Hanging side comment change: a comment will not be considered to be a
-      hanging side comment if there is no leading whitespace on the line.
-      This should improve the reliability of identifying hanging side comments.
-      Thanks to Peter Masiar for this suggestion.
-
-     -Two new commands for outdenting, -olq (outdent-long-quotes) and -olc
-      (outdent-long-comments), have been added.  The original -oll
-      (outdent-long-lines) remains, and now is an abbreviation for -olq and -olc.
-      The new default is just -olq.  This was necessary to avoid inconsistency with
-      the new static block comment option.
-
-     -Static block comments:  to provide a way to display commented code
-      better, the convention is used that comments with a leading '##' should
-      not be formatted as usual.  Please see '-sbc' (or '--static-block-comment')
-      for documentation.  It can be deactivated with with -nsbc, but
-      should not normally be necessary. Thanks to Peter Masiar for this 
-      suggestion.
-
-     -Two changes were made to help show structure of complex lists:
-      (1) breakpoints are forced after every ',' in a list where any of
-      the list items spans multiple lines, and
-      (2) List items which span multiple lines now get continuation indentation.
-
-      The following example illustrates both of these points.  Many thanks to
-      Wolfgang Weisselberg for this snippet and a discussion of it; this is a
-      significant formatting improvement. Note how it is easier to see the call
-      parameters in the NEW version:
-
-        OLD:
-        assert( __LINE__, ( not defined $check )
-            or ref $check
-            or $check eq "new"
-            or $check eq "old", "Error in parameters",
-            defined $old_new ? ( ref $old_new ? ref $old_new : $old_new ) : "undef",
-            defined $db_new  ? ( ref $db_new  ? ref $db_new  : $db_new )  : "undef",
-            defined $old_db ? ( ref $old_db ? ref $old_db : $old_db ) : "undef" );
-
-        NEW: 
-        assert(
-            __LINE__,
-            ( not defined $check )
-              or ref $check
-              or $check eq "new"
-              or $check eq "old",
-            "Error in parameters",
-            defined $old_new ? ( ref $old_new ? ref $old_new : $old_new ) : "undef",
-            defined $db_new  ? ( ref $db_new  ? ref $db_new  : $db_new )  : "undef",
-            defined $old_db  ? ( ref $old_db  ? ref $old_db  : $old_db )  : "undef"
-        );
-
-        Another example shows how this helps displaying lists:
-
-        OLD:
-        %{ $self->{COMPONENTS} } = (
-            fname =>
-            { type => 'name', adj => 'yes', font => 'Helvetica', 'index' => 0 },
-            street =>
-            { type => 'road', adj => 'yes', font => 'Helvetica', 'index' => 2 },
-        );
-
-        The structure is clearer with the added indentation:
-    
-        NEW:
-        %{ $self->{COMPONENTS} } = (
-            fname =>
-              { type => 'name', adj => 'yes', font => 'Helvetica', 'index' => 0 },
-            street =>
-              { type => 'road', adj => 'yes', font => 'Helvetica', 'index' => 2 },
-        );
-
-        -The structure of nested logical expressions is now displayed better.
-        Thanks to Wolfgang Weisselberg for helpful discussions.  For example,
-        note how the status of the final 'or' is displayed in the following:
-
-        OLD:
-        return ( !null($op)
-              and null( $op->sibling )
-              and $op->ppaddr eq "pp_null"
-              and class($op) eq "UNOP"
-              and ( ( $op->first->ppaddr =~ /^pp_(and|or)$/
-                and $op->first->first->sibling->ppaddr eq "pp_lineseq" )
-                or ( $op->first->ppaddr eq "pp_lineseq"
-                    and not null $op->first->first->sibling
-                    and $op->first->first->sibling->ppaddr eq "pp_unstack" ) ) );
-
-        NEW:
-        return (
-            !null($op)
-              and null( $op->sibling )
-              and $op->ppaddr eq "pp_null"
-              and class($op) eq "UNOP"
-              and (
-                (
-                    $op->first->ppaddr =~ /^pp_(and|or)$/
-                    and $op->first->first->sibling->ppaddr eq "pp_lineseq"
-                )
-                or ( $op->first->ppaddr eq "pp_lineseq"
-                    and not null $op->first->first->sibling
-                    and $op->first->first->sibling->ppaddr eq "pp_unstack" )
-              )
-        );
-
-       -A break will always be put before a list item containing a comma-arrow.
-       This will improve formatting of mixed lists of this form:
-
-            OLD:
-            $c->create(
-                'text', 225, 20, -text => 'A Simple Plot',
-                -font => $font,
-                -fill => 'brown'
-            );
-
-            NEW:
-            $c->create(
-                'text', 225, 20,
-                -text => 'A Simple Plot',
-                -font => $font,
-                -fill => 'brown'
-            );
-
-      -For convenience, the command -dac (--delete-all-comments) now also
-      deletes pod.  Likewise, -tac (--tee-all-comments) now also sends pod
-      to a '.TEE' file.  Complete control over the treatment of pod and
-      comments is still possible, as described in the updated help message 
-      and man page.
-
-      -The logic which breaks open 'containers' has been rewritten to be completely
-      symmetric in the following sense: if a line break is placed after an opening
-      {, [, or (, then a break will be placed before the corresponding closing
-      token.  Thus, a container either remains closed or is completely cracked
-      open.
-
-      -Improved indentation of parenthesized lists.  For example, 
-
-                OLD:
-                $GPSCompCourse =
-                  int(
-                  atan2( $GPSTempCompLong - $GPSLongitude,
-                  $GPSLatitude - $GPSTempCompLat ) * 180 / 3.14159265 );
-
-                NEW:
-                $GPSCompCourse = int(
-                    atan2(
-                        $GPSTempCompLong - $GPSLongitude,
-                        $GPSLatitude - $GPSTempCompLat
-                      ) * 180 / 3.14159265
-                );
-
-       Further improvements will be made in future releases.
-
-      -Some improvements were made in formatting small lists.
-
-      -Correspondence between Input and Output line numbers reported in a 
-       .LOG file should now be exact.  They were sometimes off due to the size
-       of intermediate buffers.
-
-      -Corrected minor tokenization error in which a ';' in a foreach loop
-       control was tokenized as a statement termination, which forced a 
-       line break:
-
-            OLD:
-            foreach ( $i = 0;
-                $i <= 10;
-                $i += 2
-              )
-            {
-                print "$i ";
-            }
-
-            NEW:
-            foreach ( $i = 0 ; $i <= 10 ; $i += 2 ) {
-                print "$i ";
-            }
-
-      -Corrected a problem with reading config files, in which quote marks were not
-       stripped.  As a result, something like -wba="&& . || " would have the leading
-       quote attached to the && and not work correctly.  A workaround for older
-       versions is to place a space around all tokens within the quotes, like this:
-       -wba=" && . || "
-
-      -Removed any existing space between a label and its ':'
-        OLD    : { }
-        NEW: { }
-       This was necessary because the label and its colon are a single token.
-
-      -Corrected tokenization error for the following (highly non-recommended) 
-       construct:
-        $user = @vars[1] / 100;
-      -Resolved cause of a difference between perltidy under perl v5.6.1 and
-      5.005_03; the problem was different behavior of \G regex position
-      marker(!)
-
-  2001 10 20
-     -Corrected a bug in which a break was not being made after a full-line
-     comment within a short eval/sort/map/grep block.  A flag was not being
-     zeroed.  The syntax error check catches this.  Here is a snippet which
-     illustrates the bug:
-
-            eval {
-                #open Socket to Dispatcher
-                $sock = &OpenSocket;
-            };
-
-     The formatter mistakenly thought that it had found the following 
-     one-line block:
-            eval {#open Socket to Dispatcher$sock = &OpenSocket; };
-
-     The patch fixes this. Many thanks to Henry Story for reporting this bug.
-
-     -Changes were made to help diagnose and resolve problems in a
-     .perltidyrc file: 
-       (1) processing of command parameters has been into two separate
-       batches so that any errors in a .perltidyrc file can be localized.  
-       (2) commands --help, --version, and as many of the --dump-xxx
-       commands are handled immediately, without any command line processing
-       at all.  
-       (3) Perltidy will ignore any commands in the .perltidyrc file which
-       cause immediate exit.  These are:  -h -v -ddf -dln -dop -dsn -dtt
-       -dwls -dwrs -ss.  Thanks to Wolfgang Weisselberg for helpful
-       suggestions regarding these updates.
-
-     -Syntax check has been reinstated as default for MSWin32 systems.  This
-     way Windows 2000 users will get syntax check by default, which seems
-     like a better idea, since the number of Win 95/98 systems will be
-     decreasing over time.  Documentation revised to warn Windows 95/98
-     users about the problem with empty '&1'.  Too bad these systems
-     all report themselves as MSWin32.
-
-  2001 10 16
-     -Fixed tokenization error in which a method call of the form
-
-        Module::->new();
-      got a space before the '::' like this:
-
-        Module ::->new();
-
-      Thanks to David Holden for reporting this.
-     -Added -html control over pod text, using a new abbreviation 'pd'.  See
-     updated perl2web man page. The default is to use the color of a comment,
-     but italicized.  Old .css style sheets will need a new line for
-     .pd to use this.  The old color was the color of a string, and there
-     was no control.  
-     -.css lines are now printed in sorted order.
-
-     -Fixed interpolation problem where html files had '$input_file' as title
-     instead of actual input file name.  Thanks to Simon Perreault for finding
-     this and sending a patch, and also to Tobias Weber.
-
-     -Breaks will now have the ':' placed at the start of a line, 
-     one per line by default because this shows logical structure
-     more clearly. This coding has been completely redone. Some 
-     examples of new ?/: formatting:
-
-           OLD:
-                wantarray ? map( $dir::cwd->lookup($_)->path, @_ ) :
-                  $dir::cwd->lookup( $_[0] )->path;
-
-           NEW:
-                wantarray 
-                  ? map( $dir::cwd->lookup($_)->path, @_ )
-                  : $dir::cwd->lookup( $_[0] )->path;
-
-           OLD:
-                    $a = ( $b > 0 ) ? {
-                        a => 1,
-                        b => 2
-                    } : { a => 6, b => 8 };
-
-           NEW:
-                    $a = ( $b > 0 )
-                      ? {
-                        a => 1,
-                        b => 2
-                      }
-                      : { a => 6, b => 8 };
-
-        OLD: (-gnu):
-        $self->note($self->{skip} ? "Hunk #$self->{hunk} ignored at 1.\n" :
-                    "Hunk #$self->{hunk} failed--$@");
-
-        NEW: (-gnu):
-        $self->note($self->{skip} 
-                    ? "Hunk #$self->{hunk} ignored at 1.\n"
-                    : "Hunk #$self->{hunk} failed--$@");
-
-        OLD:
-            $which_search =
-              $opts{"t"} ? 'title'   :
-              $opts{"s"} ? 'subject' : $opts{"a"} ? 'author' : 'title';
-
-        NEW:
-            $which_search =
-              $opts{"t"} ? 'title'
-              : $opts{"s"} ? 'subject'
-              : $opts{"a"} ? 'author'
-              : 'title';
-     You can use -wba=':' to recover the previous default which placed ':'
-     at the end of a line.  Thanks to Michael Cartmell for helpful
-     discussions and examples.  
-
-     -Tokenizer updated to do syntax checking for matched ?/: pairs.  Also,
-     the tokenizer now outputs a unique serial number for every balanced
-     pair of brace types and ?/: pairs.  This greatly simplifies the
-     formatter.
-
-     -Long lines with repeated 'and', 'or', '&&', '||'  will now have
-     one such item per line.  For example:
-
-        OLD:
-            if ( $opt_d || $opt_m || $opt_p || $opt_t || $opt_x
-                || ( -e $archive && $opt_r ) )
-            {
-                ( $pAr, $pNames ) = readAr($archive);
-            }
-
-        NEW:
-            if ( $opt_d
-                || $opt_m
-                || $opt_p
-                || $opt_t
-                || $opt_x
-                || ( -e $archive && $opt_r ) )
-            {
-                ( $pAr, $pNames ) = readAr($archive);
-            }
-
-       OLD:
-            if ( $vp->{X0} + 4 <= $x && $vp->{X0} + $vp->{W} - 4 >= $x
-                && $vp->{Y0} + 4 <= $y && $vp->{Y0} + $vp->{H} - 4 >= $y ) 
-
-       NEW:
-            if ( $vp->{X0} + 4 <= $x
-                && $vp->{X0} + $vp->{W} - 4 >= $x
-                && $vp->{Y0} + 4 <= $y
-                && $vp->{Y0} + $vp->{H} - 4 >= $y )
-
-     -Long lines with multiple concatenated tokens will have concatenated
-     terms (see below) placed one per line, except for short items.  For
-     example:
-
-       OLD:
-            $report .=
-              "Device type:" . $ib->family . "  ID:" . $ib->serial . "  CRC:"
-              . $ib->crc . ": " . $ib->model() . "\n";
-
-       NEW:
-            $report .= "Device type:"
-              . $ib->family . "  ID:"
-              . $ib->serial . "  CRC:"
-              . $ib->model()
-              . $ib->crc . ": " . "\n";
-
-     NOTE: at present 'short' means 8 characters or less.  There is a
-     tentative flag to change this (-scl), but it is undocumented and
-     is likely to be changed or removed later, so only use it for testing.  
-     In the above example, the tokens "  ID:", "  CRC:", and "\n" are below
-     this limit.  
-
-     -If a line which is short enough to fit on a single line was
-     nevertheless broken in the input file at a 'good' location (see below), 
-     perltidy will try to retain a break.  For example, the following line
-     will be formatted as:
-        open SUM, "<$file"
-          or die "Cannot open $file ($!)";
-     if it was broken in the input file, and like this if not:
-
-        open SUM, "<$file" or die "Cannot open $file ($!)";
-
-     GOOD: 'good' location means before 'and','or','if','unless','&&','||'
-
-     The reason perltidy does not just always break at these points is that if
-     there are multiple, similar statements, this would preclude alignment.  So
-     rather than check for this, perltidy just tries to follow the input style,
-     in the hopes that the author made a good choice. Here is an example where 
-     we might not want to break before each 'if':
-
-        ($Locale, @Locale) = ($English, @English) if (@English > @Locale);
-        ($Locale, @Locale) = ($German,  @German)  if (@German > @Locale);
-        ($Locale, @Locale) = ($French,  @French)  if (@French > @Locale);
-        ($Locale, @Locale) = ($Spanish, @Spanish) if (@Spanish > @Locale);
-
-     -Added wildcard file expansion for systems with shells which lack this.
-     Now 'perltidy *.pl' should work under MSDOS/Windows.  Thanks to Hugh Myers 
-     for suggesting this.  This uses builtin glob() for now; I may change that.
-
-     -Added new flag -sbl which, if specified, overrides the value of -bl
-     for opening sub braces.  This allows formatting of this type:
-
-     perltidy -sbl 
-
-     sub foo
-     {
-        if (!defined($_[0])) {
-            print("Hello, World\n");
-        }
-        else {
-            print($_[0], "\n");
-        }
-     }
-     Requested by Don Alexander.
-
-     -Fixed minor parsing error which prevented a space after a $$ variable
-     (pid) in some cases.  Thanks to Michael Cartmell for noting this.
-     For example, 
-       old: $$< 700 
-       new: $$ < 700
-
-     -Improved line break choices 'and' and 'or' to display logic better.
-     For example:
-
-        OLD:
-            exists $self->{'build_dir'} and push @e,
-              "Unwrapped into directory $self->{'build_dir'}";
-
-        NEW:
-            exists $self->{'build_dir'}
-              and push @e, "Unwrapped into directory $self->{'build_dir'}";
-
-     -Fixed error of multiple use of abbreviatioin '-dsc'.  -dsc remains 
-     abbreviation for delete-side-comments; -dsm is new abbreviation for 
-     delete-semicolons.
-
-     -Corrected and updated 'usage' help routine.  Thanks to Slaven Rezic for 
-     noting an error.
-
-     -The default for Windows is, for now, not to do a 'perl -c' syntax
-     check (but -syn will activate it).  This is because of problems with
-     command.com.  James Freeman sent me a patch which tries to get around
-     the problems, and it works in many cases, but testing revealed several
-     issues that still need to be resolved.  So for now, the default is no
-     syntax check for Windows.
-
-     -I added a -T flag when doing perl -c syntax check.
-     This is because I test it on a large number of scripts from sources
-     unknown, and who knows what might be hidden in initialization blocks?
-     Also, deactivated the syntax check if perltidy is run as root.  As a
-     benign example, running the previous version of perltidy on the
-     following file would cause it to disappear:
-
-            BEGIN{
-                    print "Bye, bye baby!\n";
-                    unlink $0;
-            }
-        
-     The new version will not let that happen.
-
-     -I am contemplating (but have not yet implemented) making '-lp' the
-     default indentation, because it is stable now and may be closer to how
-     perl is commonly formatted.  This could be in the next release.  The
-     reason that '-lp' was not the original default is that the coding for
-     it was complex and not ready for the initial release of perltidy.  If
-     anyone has any strong feelings about this, I'd like to hear.  The
-     current default could always be recovered with the '-nlp' flag.
-
-  2001 09 03
-     -html updates:
-         - sub definition names are now specially colored, red by default.  
-           The letter 'm' is used to identify them.
-         - keyword 'sub' now has color of other keywords.
-         - restored html keyword color to __END__ and __DATA__, which was 
-           accidentally removed in the previous version.
-
-     -A new -se (--standard-error-output) flag has been implemented and
-     documented which causes all errors to be written to standard output
-     instead of a .ERR file.
-
-     -A new -w (--warning-output) flag has been implemented and documented
-      which causes perltidy to output certain non-critical messages to the
-      error output file, .ERR.  These include complaints about pod usage,
-      for example.  The default is to not include these.
-
-      NOTE: This replaces an undocumented -w=0 or --warning-level flag
-      which was tentatively introduced in the previous version to avoid some
-      unwanted messages.  The new default is the same as the old -w=0, so
-      that is no longer needed. 
-
-      -Improved syntax checking and corrected tokenization of functions such
-      as rand, srand, sqrt, ...  These can accept either an operator or a term
-      to their right.  This has been corrected.
-     -Corrected tokenization of semicolon: testing of the previous update showed 
-     that the semicolon in the following statement was being mis-tokenized.  That
-     did no harm, other than adding an extra blank space, but has been corrected.
-
-              for (sort {strcoll($a,$b);} keys %investments) {
-                 ...
-              }
-
-     -New syntax check: after wasting 5 minutes trying to resolve a syntax
-      error in which I had an extra terminal ';' in a complex for (;;) statement, 
-      I spent a few more minutes adding a check for this in perltidy so it won't
-      happen again.
-
-     -The behavior of --break-before-subs (-bbs) and --break-before-blocks
-     (-bbb) has been modified.  Also, a new control parameter,
-     --long-block-line-count=n (-lbl=n) has been introduced to give more
-     control on -bbb.  This was previously a hardwired value.  The reason
-     for the change is to reduce the number of unwanted blank lines that
-     perltidy introduces, and make it less erratic.  It's annoying to remove
-     an unwanted blank line and have perltidy put it back.  The goal is to
-     be able to sprinkle a few blank lines in that dense script you
-     inherited from Bubba.  I did a lot of experimenting with different
-     schemes for introducing blank lines before and after code blocks, and
-     decided that there is no really good way to do it.  But I think the new
-     scheme is an improvement.  You can always deactivate this with -nbbb.
-     I've been meaning to work on this; thanks to Erik Thaysen for bringing
-     it to my attention.
-
-     -The .LOG file is seldom needed, and I get tired of deleting them, so
-      they will now only be automatically saved if perltidy thinks that it
-      made an error, which is almost never.  You can still force the logfile
-      to be saved with -log or -g.
-
-     -Improved method for computing number of columns in a table.  The old
-     method always tried for an even number.  The new method allows odd
-     numbers when it is obvious that a list is not a hash initialization
-     list.
-
-       old: my (
-                 $name,       $xsargs, $parobjs, $optypes,
-                 $hasp2child, $pmcode, $hdrcode, $inplacecode,
-                 $globalnew,  $callcopy
-              )
-              = @_;
-
-       new: my (
-                 $name,   $xsargs,  $parobjs,     $optypes,   $hasp2child,
-                 $pmcode, $hdrcode, $inplacecode, $globalnew, $callcopy
-              )
-              = @_;
-
-     -I fiddled with the list threshold adjustment, and some small lists
-     look better now.  Here is the change for one of the lists in test file
-     'sparse.t':
-     old:
-       %units =
-         ("in", "in", "pt", "pt", "pc", "pi", "mm", "mm", "cm", "cm", "\\hsize", "%",
-           "\\vsize", "%", "\\textwidth", "%", "\\textheight", "%");
-
-     new:
-       %units = (
-                  "in",      "in", "pt",          "pt", "pc",           "pi",
-                  "mm",      "mm", "cm",          "cm", "\\hsize",      "%",
-                  "\\vsize", "%",  "\\textwidth", "%",  "\\textheight", "%"
-                  );
-
-     -Improved -lp formatting at '=' sign.  A break was always being added after
-     the '=' sign in a statement such as this, (to be sure there was enough room
-     for the parameters):
-
-     old: my $fee =
-            CalcReserveFee(
-                            $env,          $borrnum,
-                            $biblionumber, $constraint,
-                            $bibitems
-                            );
-     The updated version doesn't do this unless the space is really needed:
-
-     new: my $fee = CalcReserveFee(
-                                   $env,          $borrnum,
-                                   $biblionumber, $constraint,
-                                   $bibitems
-                                   );
-
-     -I updated the tokenizer to allow $#+ and $#-, which seem to be new to
-     Perl 5.6.  Some experimenting with a recent version of Perl indicated
-     that it allows these non-alphanumeric '$#' array maximum index
-     varaibles: $#: $#- $#+ so I updated the parser accordingly.  Only $#:
-     seems to be valid in older versions of Perl.
-
-     -Fixed a rare formatting problem with -lp (and -gnu) which caused
-     excessive indentation.
-
-     -Many additional syntax checks have been added.
-
-     -Revised method for testing here-doc target strings; the following
-     was causing trouble with a regex test because of the '*' characters:
-      print <<"*EOF*";
-      bla bla
-      *EOF*
-     Perl seems to allow almost anything to be a here doc target, so an
-     exact string comparison is now used.
-
-     -Made update to allow underscores in binary numbers, like '0b1100_0000'.
-
-     -Corrected problem with scanning certain module names; a blank space was 
-     being inserted after 'warnings' in the following:
-        use warnings::register;
-     The problem was that warnings (and a couple of other key modules) were 
-     being tokenized as keywords.  They should have just been identifiers.
-
-     -Corrected tokenization of indirect objects after sort, system, and exec,
-     after testing produced an incorrect error message for the following
-     line of code:
-        print sort $sortsubref @list;
-
-     -Corrected minor problem where a line after a format had unwanted
-     extra continuation indentation.  
-
-     -Delete-block-comments (and -dac) now retain any leading hash-bang line
-
-     -Update for -lp (and -gnu) to not align the leading '=' of a list
-     with a previous '=', since this interferes with alignment of parameters.
-
-      old:  my $hireDay = new Date;
-            my $self    = {
-                         firstName => undef,
-                         lastName  => undef,
-                         hireDay   => $hireDay
-                         };
-    
-      new:  my $hireDay = new Date;
-            my $self = {
-                         firstName => undef,
-                         lastName  => undef,
-                         hireDay   => $hireDay
-                         };
-
-     -Modifications made to display tables more compactly when possible,
-      without adding lines. For example,
-      old:
-                    '1', "I", '2', "II", '3', "III", '4', "IV",
-                    '5', "V", '6', "VI", '7', "VII", '8', "VIII",
-                    '9', "IX"
-      new:
-                    '1', "I",   '2', "II",   '3', "III",
-                    '4', "IV",  '5', "V",    '6', "VI",
-                    '7', "VII", '8', "VIII", '9', "IX"
-
-     -Corrected minor bug in which -pt=2 did not keep the right paren tight
-     around a '++' or '--' token, like this:
-
-                for ($i = 0 ; $i < length $key ; $i++ )
-
-     The formatting for this should be, and now is: 
-
-                for ($i = 0 ; $i < length $key ; $i++)
-
-     Thanks to Erik Thaysen for noting this.
-
-     -Discovered a new bug involving here-docs during testing!  See BUGS.html.  
-
-     -Finally fixed parsing of subroutine attributes (A Perl 5.6 feature).
-     However, the attributes and prototypes must still be on the same line
-     as the sub name.
-
-  2001 07 31
-     -Corrected minor, uncommon bug found during routine testing, in which a
-     blank got inserted between a function name and its opening paren after
-     a file test operator, but only in the case that the function had not
-     been previously seen.  Perl uses the existence (or lack thereof) of 
-     the blank to guess if it is a function call.  That is,
-        if (-l pid_filename()) {
-     became
-        if (-l pid_filename ()) {
-     which is a syntax error if pid_filename has not been seen by perl.
-
-     -If the AutoLoader module is used, perltidy will continue formatting
-     code after seeing an __END__ line.  Use -nlal to deactivate this feature.  
-     Likewise, if the SelfLoader module is used, perltidy will continue 
-     formatting code after seeing a __DATA__ line.  Use -nlsl to
-     deactivate this feature.  Thanks to Slaven Rezic for this suggestion.
-
-     -pod text after __END__ and __DATA__ is now identified by perltidy
-     so that -dp works correctly.  Thanks to Slaven Rezic for this suggestion.
-
-     -The first $VERSION line which might be eval'd by MakeMaker
-     is now passed through unchanged.  Use -npvl to deactivate this feature.
-     Thanks to Manfred Winter for this suggestion.
-
-     -Improved indentation of nested parenthesized expressions.  Tests have
-     given favorable results.  Thanks to Wolfgang Weisselberg for helpful
-     examples.
-
-  2001 07 23
-     -Fixed a very rare problem in which an unwanted semicolon was inserted
-     due to misidentification of anonymous hash reference curly as a code
-     block curly.  (No instances of this have been reported; I discovered it
-     during testing).  A workaround for older versions of perltidy is to use
-     -nasc.
-
-     -Added -icb (-indent-closing-brace) parameter to indent a brace which
-     terminates a code block to the same level as the previous line.
-     Suggested by Andrew Cutler.  For example, 
-
-            if ($task) {
-                yyy();
-                }    # -icb
-            else {
-                zzz();
-                }
-
-     -Rewrote error message triggered by an unknown bareword in a print or
-     printf filehandle position, and added flag -w=0 to prevent issuing this
-     error message.  Suggested by Byron Jones.
-
-     -Added modification to align a one-line 'if' block with similar
-     following 'elsif' one-line blocks, like this:
-          if    ( $something eq "simple" )  { &handle_simple }
-          elsif ( $something eq "hard" )    { &handle_hard }
-     (Suggested by  Wolfgang Weisselberg).
-
-  2001 07 02
-     -Eliminated all constants with leading underscores because perl 5.005_03
-     does not support that.  For example, _SPACES changed to XX_SPACES.
-     Thanks to kromJx for this update.
-
-  2001 07 01
-     -the directory of test files has been moved to a separate distribution
-     file because it is getting large but is of little interest to most users.
-     For the current distribution:
-       perltidy-20010701.tgz        contains the source and docs for perltidy
-       perltidy-20010701-test.tgz   contains the test files
-
-     -fixed bug where temporary file perltidy.TMPI was not being deleted 
-     when input was from stdin.
-
-     -adjusted line break logic to not break after closing brace of an
-     eval block (suggested by Boris Zentner).
-
-     -added flag -gnu (--gnu-style) to give an approximation to the GNU
-     style as sometimes applied to perl.  The programming style in GNU
-     'automake' was used as a guide in setting the parameters; these
-     parameters will probably be adjusted over time.
-
-     -an empty code block now has one space for emphasis:
-       if ( $cmd eq "bg_untested" ) {}    # old
-       if ( $cmd eq "bg_untested" ) { }   # new
-     If this bothers anyone, we could create a parameter.
-
-     -the -bt (--brace-tightness) parameter has been split into two
-     parameters to give more control. -bt now applies only to non-BLOCK
-     braces, while a new parameter -bbt (block-brace-tightness) applies to
-     curly braces which contain code BLOCKS. The default value is -bbt=0.
-
-     -added flag -icp (--indent-closing-paren) which leaves a statement
-     termination of the form );, };, or ]; indented with the same
-     indentation as the previous line.  For example,
-
-        @month_of_year = (          # default, or -nicp
-            'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
-            'Nov', 'Dec'
-        );
-
-        @month_of_year = (          # -icp
-            'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
-            'Nov', 'Dec'
-            );
-
-     -Vertical alignment updated to synchronize with tokens &&, ||,
-     and, or, if, unless.  Allowable space before forcing
-     resynchronization has been increased.  (Suggested by  Wolfgang
-     Weisselberg).
-
-     -html corrected to use -nohtml-bold-xxxxxxx or -nhbx to negate bold,
-     and likewise -nohtml-italic-xxxxxxx or -nhbi to negate italic.  There
-     was no way to negate these previously.  html documentation updated and
-     corrected.  (Suggested by  Wolfgang Weisselberg).
-
-     -Some modifications have been made which improve the -lp formatting in
-     a few cases.
-
-     -Perltidy now retains or creates a blank line after an =cut to keep
-     podchecker happy (Suggested by Manfred H. Winter).  This appears to be
-     a glitch in podchecker, but it was annoying.
-
-  2001 06 17
-     -Added -bli flag to give continuation indentation to braces, like this
-
-            if ($bli_flag)
-              {
-                extra_indentation();
-              }
-
-     -Corrected an error with the tab (-t) option which caused the last line
-     of a multi-line quote to receive a leading tab.  This error was in
-     version 2001 06 08  but not 2001 04 06.  If you formatted a script
-     with -t with this version, please check it by running once with the
-     -chk flag and perltidy will scan for this possible error.
-
-     -Corrected an invalid pattern (\R should have been just R), changed
-     $^W =1 to BEGIN {$^W=1} to use warnings in compile phase, and corrected
-     several unnecessary 'my' declarations. Many thanks to Wolfgang Weisselberg,
-     2001-06-12, for catching these errors.
-     -A '-bar' flag has been added to require braces to always be on the
-     right, even for multi-line if and foreach statements.  For example,
-     the default formatting of a long if statement would be:
-
-            if ($bigwasteofspace1 && $bigwasteofspace2
-              || $bigwasteofspace3 && $bigwasteofspace4)
-            {
-                bigwastoftime();
-            }
-
-     With -bar, the formatting is:
-
-            if ($bigwasteofspace1 && $bigwasteofspace2
-              || $bigwasteofspace3 && $bigwasteofspace4) {
-                bigwastoftime();
-            }
-     Suggested by Eli Fidler 2001-06-11.
-
-     -Uploaded perltidy to sourceforge cvs 2001-06-10.
-
-     -An '-lp' flag (--line-up-parentheses) has been added which causes lists
-     to be indented with extra indentation in the manner sometimes
-     associated with emacs or the GNU suggestions.  Thanks to Ian Stuart for
-     this suggestion and for extensive help in testing it. 
-
-     -Subroutine call parameter lists are now formatted as other lists.
-     This should improve formatting of tables being passed via subroutine
-     calls.  This will also cause full indentation ('-i=n, default n= 4) of
-     continued parameter list lines rather than just the number of spaces
-     given with -ci=n, default n=2.
-     -Added support for hanging side comments.  Perltidy identifies a hanging
-     side comment as a comment immediately following a line with a side
-     comment or another hanging side comment.  This should work in most
-     cases.  It can be deactivated with --no-hanging-side-comments (-nhsc).
-     The manual has been updated to discuss this.  Suggested by Brad
-     Eisenberg some time ago, and finally implemented.
-
-  2001 06 08
-     -fixed problem with parsing command parameters containing quoted
-     strings in .perltidyrc files. (Reported by Roger Espel Llima 2001-06-07).
-
-     -added two command line flags, --want-break-after and 
-     --want-break-before, which allow changing whether perltidy
-     breaks lines before or after any operators.  Please see the revised 
-     man pages for details.
-
-     -added system-wide configuration file capability.
-     If perltidy does not find a .perltidyrc command line file in
-     the current directory, nor in the home directory, it now looks
-     for '/usr/local/etc/perltidyrc' and then for '/etc/perltidyrc'.
-     (Suggested by Roger Espel Llima 2001-05-31).
-
-     -fixed problem in which spaces were trimmed from lines of a multi-line
-     quote. (Reported by Roger Espel Llima 2001-05-30).  This is an 
-     uncommon situation, but serious, because it could conceivably change
-     the proper function of a script.
-
-     -fixed problem in which a semicolon was incorrectly added within 
-     an anonymous hash.  (Reported by A.C. Yardley, 2001-5-23).
-     (You would know if this happened, because perl would give a syntax
-     error for the resulting script).
-
-     -fixed problem in which an incorrect error message was produced
-      after a version number on a 'use' line, like this ( Reported 
-      by Andres Kroonmaa, 2001-5-14):
-
-                  use CGI 2.42 qw(fatalsToBrowser);
-
-      Other than the extraneous error message, this bug was harmless.
-
-  2001 04 06
-     -fixed serious bug in which the last line of some multi-line quotes or
-      patterns was given continuation indentation spaces.  This may make
-      a pattern incorrect unless it uses the /x modifier.  To find
-      instances of this error in scripts which have been formatted with
-      earlier versions of perltidy, run with the -chk flag, which has
-      been added for this purpose (SLH, 2001-04-05).
-
-      ** So, please check previously formatted scripts by running with -chk
-      at least once **
-
-     -continuation indentation has been reprogrammed to be hierarchical, 
-      which improves deeply nested structures.
-
-     -fixed problem with undefined value in list formatting (reported by Michael
-      Langner 2001-04-05)
-
-     -Switched to graphical display of nesting in .LOG files.  If an
-      old format string was "(1 [0 {2", the new string is "{{(".  This
-      is easier to read and also shows the order of nesting.
-
-     -added outdenting of cuddled paren structures, like  ")->pack(".
-
-     -added line break and outdenting of ')->' so that instead of
-
-            $mw->Label(
-              -text   => "perltidy",
-              -relief => 'ridge')->pack;
-      the current default is:
-
-            $mw->Label(
-              -text   => "perltidy",
-              -relief => 'ridge'
-            )->pack;
-
-      (requested by Michael Langner 2001-03-31; in the future this could 
-      be controlled by a command-line parameter).
-
-     -revised list indentation logic, so that lists following an assignment
-      operator get one full indentation level, rather than just continuation 
-      indentation.  Also corrected some minor glitches in the continuation 
-      indentation logic. 
-
-     -Fixed problem with unwanted continuation indentation after a blank line 
-     (reported by Erik Thaysen 2001-03-28):
-
-     -minor update to avoid stranding a single '(' on one line
-
-  2001 03 28:
-     -corrected serious error tokenizing filehandles, in which a sub call 
-     after a print or printf, like this:
-        print usage() and exit;
-     became this:
-        print usage () and exit;
-     Unfortunately, this converts 'usage' to a filehandle.  To fix this, rerun
-     perltidy; it will look for this situation and issue a warning. 
-
-     -fixed another cuddled-else formatting bug (Reported by Craig Bourne)
-
-     -added several diagnostic --dump routines
-     -added token-level whitespace controls (suggested by Hans Ecke)
-
-  2001 03 23:
-     -added support for special variables of the form ${^WANT_BITS}
-
-     -space added between scalar and left paren in 'for' and 'foreach' loops,
-      (suggestion by Michael Cartmell):
-
-        for $i( 1 .. 20 )   # old
-        for $i ( 1 .. 20 )   # new
-
-     -html now outputs cascading style sheets (thanks to suggestion from
-      Hans Ecke)
-
-     -flags -o and -st now work with -html
-
-     -added missing -html documentation for comments (noted by Alex Izvorski)
-
-     -support for VMS added (thanks to Michael Cartmell for code patches and 
-       testing)
-
-     -v-strings implemented (noted by Hans Ecke and Michael Cartmell; extensive
-       testing by Michael Cartmell)
-
-     -fixed problem where operand may be empty at line 3970 
-      (\b should be just b in lines 3970, 3973) (Thanks to Erik Thaysen, 
-      Keith Marshall for bug reports)
-
-     -fixed -ce bug (cuddled else), where lines like '} else {' were indented
-      (Thanks to Shawn Stepper and Rick Measham for reporting this)
-
-  2001 03 04:
-     -fixed undefined value in line 153 (only worked with -I set)
-     (Thanks to Mike Stok, Phantom of the Opcodes, Ian Ehrenwald, and others)
-
-     -fixed undefined value in line 1069 (filehandle problem with perl versions <
-     5.6) (Thanks to Yuri Leikind, Mike Stok, Michael Holve, Jeff Kolber)
-
-  2001 03 03:
-     -Initial announcement at freshmeat.net; started Change Log
-     (Unfortunately this version was DOA, but it was fixed the next day)
-