+ 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 becomming 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",
+ ;
+