]> git.donarmstrong.com Git - perltidy.git/blob - bin/perltidy
* New upstream release
[perltidy.git] / bin / perltidy
1 #!/usr/bin/perl
2 package main;
3
4 use Perl::Tidy;
5
6 my $arg_string = undef;
7
8 # give Macs a chance to provide command line parameters
9 if ( $^O =~ /Mac/ ) {
10     $arg_string = MacPerl::Ask(
11         'Please enter @ARGV (-h for help)',
12         defined $ARGV[0] ? "\"$ARGV[0]\"" : ""
13     );
14 }
15
16 Perl::Tidy::perltidy( argv => $arg_string );
17
18 __END__
19
20 =head1 NAME
21
22 perltidy - a perl script indenter and reformatter
23
24 =head1 SYNOPSIS
25
26     perltidy [ options ] file1 file2 file3 ...
27             (output goes to file1.tdy, file2.tdy, file3.tdy, ...)
28     perltidy [ options ] file1 -o outfile
29     perltidy [ options ] file1 -st >outfile
30     perltidy [ options ] <infile >outfile
31
32 =head1 DESCRIPTION
33
34 Perltidy reads a perl script and writes an indented, reformatted script.
35
36 Many users will find enough information in L<"EXAMPLES"> to get 
37 started.  New users may benefit from the short tutorial 
38 which can be found at
39 http://perltidy.sourceforge.net/tutorial.html
40
41 A convenient aid to systematically defining a set of style parameters
42 can be found at
43 http://perltidy.sourceforge.net/stylekey.html
44
45 Perltidy can produce output on either of two modes, depending on the
46 existence of an B<-html> flag.  Without this flag, the output is passed
47 through a formatter.  The default formatting tries to follow the
48 recommendations in perlstyle(1), but it can be controlled in detail with
49 numerous input parameters, which are described in L<"FORMATTING
50 OPTIONS">.  
51
52 When the B<-html> flag is given, the output is passed through an HTML
53 formatter which is described in L<"HTML OPTIONS">.  
54
55 =head1 EXAMPLES
56
57   perltidy somefile.pl
58
59 This will produce a file F<somefile.pl.tdy> containing the script reformatted
60 using the default options, which approximate the style suggested in 
61 perlstyle(1).  The source file F<somefile.pl> is unchanged.
62
63   perltidy *.pl
64
65 Execute perltidy on all F<.pl> files in the current directory with the
66 default options.  The output will be in files with an appended F<.tdy>
67 extension.  For any file with an error, there will be a file with extension
68 F<.ERR>.
69
70   perltidy -b file1.pl file2.pl
71
72 Modify F<file1.pl> and F<file2.pl> in place, and backup the originals to
73 F<file1.pl.bak> and F<file2.pl.bak>.  If F<file1.pl.bak> and/or F<file2.pl.bak>
74 already exist, they will be overwritten.
75
76   perltidy -gnu somefile.pl
77
78 Execute perltidy on file F<somefile.pl> with a style which approximates the
79 GNU Coding Standards for C programs.  The output will be F<somefile.pl.tdy>.
80
81   perltidy -i=3 somefile.pl
82
83 Execute perltidy on file F<somefile.pl>, with 3 columns for each level of
84 indentation (B<-i=3>) instead of the default 4 columns.  There will not be any
85 tabs in the reformatted script, except for any which already exist in comments,
86 pod documents, quotes, and here documents.  Output will be F<somefile.pl.tdy>. 
87
88   perltidy -i=3 -et=8 somefile.pl
89
90 Same as the previous example, except that leading whitespace will
91 be entabbed with one tab character per 8 spaces.
92
93   perltidy -ce -l=72 somefile.pl
94
95 Execute perltidy on file F<somefile.pl> with all defaults except use "cuddled
96 elses" (B<-ce>) and a maximum line length of 72 columns (B<-l=72>) instead of
97 the default 80 columns.  
98
99   perltidy -g somefile.pl
100
101 Execute perltidy on file F<somefile.pl> and save a log file F<somefile.pl.LOG>
102 which shows the nesting of braces, parentheses, and square brackets at
103 the start of every line.
104
105   perltidy -html somefile.pl
106
107 This will produce a file F<somefile.pl.html> containing the script with
108 html markup.  The output file will contain an embedded style sheet in
109 the <HEAD> section which may be edited to change the appearance.
110
111   perltidy -html -css=mystyle.css somefile.pl
112
113 This will produce a file F<somefile.pl.html> containing the script with
114 html markup.  This output file will contain a link to a separate style
115 sheet file F<mystyle.css>.  If the file F<mystyle.css> does not exist,
116 it will be created.  If it exists, it will not be overwritten.
117
118   perltidy -html -pre somefile.pl
119
120 Write an html snippet with only the PRE section to F<somefile.pl.html>.
121 This is useful when code snippets are being formatted for inclusion in a
122 larger web page.  No style sheet will be written in this case.  
123
124   perltidy -html -ss >mystyle.css
125
126 Write a style sheet to F<mystyle.css> and exit.
127
128   perltidy -html -frm mymodule.pm
129
130 Write html with a frame holding a table of contents and the source code.  The
131 output files will be F<mymodule.pm.html> (the frame), F<mymodule.pm.toc.html>
132 (the table of contents), and F<mymodule.pm.src.html> (the source code).
133
134 =head1 OPTIONS - OVERVIEW
135
136 The entire command line is scanned for options, and they are processed
137 before any files are processed.  As a result, it does not matter
138 whether flags are before or after any filenames.  However, the relative
139 order of parameters is important, with later parameters overriding the
140 values of earlier parameters.
141
142 For each parameter, there is a long name and a short name.  The short
143 names are convenient for keyboard input, while the long names are
144 self-documenting and therefore useful in scripts.  It is customary to
145 use two leading dashes for long names, but one may be used.
146
147 Most parameters which serve as on/off flags can be negated with a
148 leading "n" (for the short name) or a leading "no" or "no-" (for the
149 long name).  For example, the flag to outdent long quotes is is B<-olq>
150 or B<--outdent-long-quotes>.  The flag to skip this is B<-nolq>
151 or B<--nooutdent-long-quotes> or B<--no-outdent-long-quotes>.
152
153 Options may not be bundled together.  In other words, options B<-q> and
154 B<-g> may NOT be entered as B<-qg>.
155
156 Option names may be terminated early as long as they are uniquely identified.
157 For example, instead of B<--dump-token-types>, it would be sufficient to enter
158 B<--dump-tok>, or even B<--dump-t>, to uniquely identify this command.
159
160 =head2 I/O control
161
162 The following parameters concern the files which are read and written.
163
164 =over 4
165
166 =item B<-h>,    B<--help> 
167
168 Show summary of usage and exit.
169
170 =item   B<-o>=filename,    B<--outfile>=filename  
171
172 Name of the output file (only if a single input file is being
173 processed).  If no output file is specified, and output is not
174 redirected to the standard output (see B<-st>), the output will go to
175 F<filename.tdy>. [Note: - does not redirect to standard output. Use
176 B<-st> instead.]
177
178 =item   B<-st>,    B<--standard-output>
179
180 Perltidy must be able to operate on an arbitrarily large number of files
181 in a single run, with each output being directed to a different output
182 file.  Obviously this would conflict with outputting to the single
183 standard output device, so a special flag, B<-st>, is required to
184 request outputting to the standard output.  For example,
185
186   perltidy somefile.pl -st >somefile.new.pl
187
188 This option may only be used if there is just a single input file.  
189 The default is B<-nst> or B<--nostandard-output>.
190
191 =item   B<-se>,    B<--standard-error-output>
192
193 If perltidy detects an error when processing file F<somefile.pl>, its
194 default behavior is to write error messages to file F<somefile.pl.ERR>.
195 Use B<-se> to cause all error messages to be sent to the standard error
196 output stream instead.  This directive may be negated with B<-nse>.
197 Thus, you may place B<-se> in a F<.perltidyrc> and override it when
198 desired with B<-nse> on the command line.
199
200 =item   B<-oext>=ext,    B<--output-file-extension>=ext  
201
202 Change the extension of the output file to be F<ext> instead of the
203 default F<tdy> (or F<html> in case the -B<-html> option is used).
204 See L<Specifying File Extensions>.
205
206 =item   B<-opath>=path,    B<--output-path>=path  
207
208 When perltidy creates a filename for an output file, by default it merely
209 appends an extension to the path and basename of the input file.  This
210 parameter causes the path to be changed to F<path> instead.
211
212 The path should end in a valid path separator character, but perltidy will try
213 to add one if it is missing.
214
215 For example
216  
217  perltidy somefile.pl -opath=/tmp/
218
219 will produce F</tmp/somefile.pl.tdy>.  Otherwise, F<somefile.pl.tdy> will
220 appear in whatever directory contains F<somefile.pl>.
221
222 If the path contains spaces, it should be placed in quotes.
223
224 This parameter will be ignored if output is being directed to standard output,
225 or if it is being specified explicitly with the B<-o=s> parameter.
226
227 =item   B<-b>,    B<--backup-and-modify-in-place>
228
229 Modify the input file or files in-place and save the original with the
230 extension F<.bak>.  Any existing F<.bak> file will be deleted.  See next
231 item for changing the default backup extension, and for eliminating the
232 backup file altogether.  
233
234 A B<-b> flag will be ignored if input is from standard input, or
235 if the B<-html> flag is set. 
236
237 =item   B<-bext>=ext,    B<--backup-file-extension>=ext  
238
239 This parameter serves two purposes: (1) to change the extension of the backup
240 file to be something other than the default F<.bak>, and (2) to indicate
241 that no backup file should be saved.
242
243 To change the default extension to something other than F<.bak> see
244 L<Specifying File Extensions>.
245
246 A backup file of the source is always written, but you can request that it
247 be deleted at the end of processing if there were no errors.  This is risky
248 unless the source code is being maintained with a source code control
249 system.  
250
251 To indicate that the backup should be deleted include one forward slash,
252 B</>, in the extension.  If any text remains after the slash is removed
253 it will be used to define the backup file extension (which is always
254 created and only deleted if there were no errors).
255
256 Here are some examples:
257
258   Parameter           Extension          Backup File Treatment
259   <-bext=bak>         F<.bak>            Keep (same as the default behavior)
260   <-bext='/'>         F<.bak>            Delete if no errors
261   <-bext='/backup'>   F<.backup>         Delete if no errors
262   <-bext='original/'> F<.original>       Delete if no errors
263
264 =item B<-w>,    B<--warning-output>             
265
266 Setting B<-w> causes any non-critical warning
267 messages to be reported as errors.  These include messages
268 about possible pod problems, possibly bad starting indentation level,
269 and cautions about indirect object usage.  The default, B<-nw> or
270 B<--nowarning-output>, is not to include these warnings.
271
272 =item B<-q>,    B<--quiet>             
273
274 Deactivate error messages and syntax checking (for running under
275 an editor). 
276
277 For example, if you use a vi-style editor, such as vim, you may execute
278 perltidy as a filter from within the editor using something like
279
280  :n1,n2!perltidy -q
281
282 where C<n1,n2> represents the selected text.  Without the B<-q> flag,
283 any error message may mess up your screen, so be prepared to use your
284 "undo" key.
285
286 =item B<-log>,    B<--logfile>           
287
288 Save the F<.LOG> file, which has many useful diagnostics.  Perltidy always
289 creates a F<.LOG> file, but by default it is deleted unless a program bug is
290 suspected.  Setting the B<-log> flag forces the log file to be saved.
291
292 =item B<-g=n>, B<--logfile-gap=n>
293
294 Set maximum interval between input code lines in the logfile.  This purpose of
295 this flag is to assist in debugging nesting errors.  The value of C<n> is
296 optional.  If you set the flag B<-g> without the value of C<n>, it will be
297 taken to be 1, meaning that every line will be written to the log file.  This
298 can be helpful if you are looking for a brace, paren, or bracket nesting error. 
299
300 Setting B<-g> also causes the logfile to be saved, so it is not necessary to
301 also include B<-log>. 
302
303 If no B<-g> flag is given, a value of 50 will be used, meaning that at least
304 every 50th line will be recorded in the logfile.  This helps prevent
305 excessively long log files.  
306
307 Setting a negative value of C<n> is the same as not setting B<-g> at all.
308
309 =item B<-npro>  B<--noprofile>    
310
311 Ignore any F<.perltidyrc> command file.  Normally, perltidy looks first in
312 your current directory for a F<.perltidyrc> file of parameters.  (The format
313 is described below).  If it finds one, it applies those options to the
314 initial default values, and then it applies any that have been defined
315 on the command line.  If no F<.perltidyrc> file is found, it looks for one
316 in your home directory.
317
318 If you set the B<-npro> flag, perltidy will not look for this file.
319
320 =item B<-pro=filename> or  B<--profile=filename>    
321
322 To simplify testing and switching .perltidyrc files, this command may be
323 used to specify a configuration file which will override the default
324 name of .perltidyrc.  There must not be a space on either side of the
325 '=' sign.  For example, the line
326
327    perltidy -pro=testcfg
328
329 would cause file F<testcfg> to be used instead of the 
330 default F<.perltidyrc>.
331
332 A pathname begins with three dots, e.g. ".../.perltidyrc", indicates that
333 the file should be searched for starting in the current directory and
334 working upwards. This makes it easier to have multiple projects each with
335 their own .perltidyrc in their root directories.
336
337 =item B<-opt>,   B<--show-options>      
338
339 Write a list of all options used to the F<.LOG> file.  
340 Please see B<--dump-options> for a simpler way to do this.
341
342 =item B<-f>,   B<--force-read-binary>      
343
344 Force perltidy to process binary files.  To avoid producing excessive
345 error messages, perltidy skips files identified by the system as non-text.
346 However, valid perl scripts containing binary data may sometimes be identified
347 as non-text, and this flag forces perltidy to process them.
348
349 =back
350
351 =head1 FORMATTING OPTIONS
352
353 =head2 Basic Options
354
355 =over 4
356
357 =item B<--notidy>
358
359 This flag disables all formatting and causes the input to be copied unchanged
360 to the output except for possible changes in line ending characters and any
361 pre- and post-filters.  This can be useful in conjunction with a hierarchical
362 set of F<.perltidyrc> files to avoid unwanted code tidying.  See also
363 L<Skipping Selected Sections of Code> for a way to avoid tidying specific
364 sections of code.
365
366 =item B<-l=n>, B<--maximum-line-length=n>
367
368 The default maximum line length is n=80 characters.  Perltidy will try
369 to find line break points to keep lines below this length. However, long
370 quotes and side comments may cause lines to exceed this length. 
371 Setting B<-l=0> is equivalent to setting B<-l=(a large number)>. 
372
373 =item B<-i=n>,  B<--indent-columns=n>  
374
375 Use n columns per indentation level (default n=4).
376
377 =item tabs
378
379 Using tab characters will almost certainly lead to future portability
380 and maintenance problems, so the default and recommendation is not to
381 use them.  For those who prefer tabs, however, there are two different
382 options.  
383
384 Except for possibly introducing tab indentation characters, as outlined
385 below, perltidy does not introduce any tab characters into your file,
386 and it removes any tabs from the code (unless requested not to do so
387 with B<-fws>).  If you have any tabs in your comments, quotes, or
388 here-documents, they will remain.
389
390 =over 4
391
392 =item B<-et=n>,   B<--entab-leading-whitespace>
393
394 This flag causes each B<n> initial space characters to be replaced by
395 one tab character.  Note that the integer B<n> is completely independent
396 of the integer specified for indentation parameter, B<-i=n>.
397
398 =item B<-t>,   B<--tabs>
399
400 This flag causes one leading tab character to be inserted for each level
401 of indentation.  Certain other features are incompatible with this
402 option, and if these options are also given, then a warning message will
403 be issued and this flag will be unset.  One example is the B<-lp>
404 option.
405
406 =back
407
408 =item B<-syn>,   B<--check-syntax>      
409
410 This flag causes perltidy to run C<perl -c -T> to check syntax of input
411 and output.  (To change the flags passed to perl, see the next
412 item, B<-pscf>).  The results are written to the F<.LOG> file, which
413 will be saved if an error is detected in the output script.  The output
414 script is not checked if the input script has a syntax error.  Perltidy
415 does its own checking, but this option employs perl to get a "second
416 opinion".
417
418 If perl reports errors in the input file, they will not be reported in
419 the error output unless the B<--warning-output> flag is given. 
420
421 The default is B<NOT> to do this type of syntax checking (although
422 perltidy will still do as much self-checking as possible).  The reason
423 is that it causes all code in BEGIN blocks to be executed, for all
424 modules being used, and this opens the door to security issues and
425 infinite loops when running perltidy.
426
427 =item B<-pscf=s>, B<-perl-syntax-check-flags=s>
428
429 When perl is invoked to check syntax, the normal flags are C<-c -T>.  In
430 addition, if the B<-x> flag is given to perltidy, then perl will also be
431 passed a B<-x> flag.  It should not normally be necessary to change
432 these flags, but it can be done with the B<-pscf=s> flag.  For example,
433 if the taint flag, C<-T>, is not wanted, the flag could be set to be just
434 B<-pscf=-c>.  
435
436 Perltidy will pass your string to perl with the exception that it will
437 add a B<-c> and B<-x> if appropriate.  The F<.LOG> file will show
438 exactly what flags were passed to perl.
439
440 =item B<-io>,   B<--indent-only>       
441
442 This flag is used to deactivate all formatting and line break changes
443 within non-blank lines of code.
444 When it is in effect, the only change to the script will be
445 to the indentation and blank lines.
446 And any flags controlling whitespace and newlines will be ignored.  You
447 might want to use this if you are perfectly happy with your whitespace
448 and line breaks, and merely want perltidy to handle the indentation.
449 (This also speeds up perltidy by well over a factor of two, so it might be
450 useful when perltidy is merely being used to help find a brace error in
451 a large script).
452
453 Setting this flag is equivalent to setting B<--freeze-newlines> and
454 B<--freeze-whitespace>.  
455
456 If you also want to keep your existing blank lines exactly
457 as they are, you can add B<--freeze-blank-lines>. 
458
459 =item B<-ole=s>,  B<--output-line-ending=s>
460
461 where s=C<win>, C<dos>, C<unix>, or C<mac>.  This flag tells perltidy
462 to output line endings for a specific system.  Normally,
463 perltidy writes files with the line separator character of the host
464 system.  The C<win> and C<dos> flags have an identical result.
465
466 =item B<-ple>,  B<--preserve-line-endings>
467
468 This flag tells perltidy to write its output files with the same line
469 endings as the input file, if possible.  It should work for
470 B<dos>, B<unix>, and B<mac> line endings.  It will only work if perltidy
471 input comes from a filename (rather than stdin, for example).  If
472 perltidy has trouble determining the input file line ending, it will
473 revert to the default behavior of using the line ending of the host system.
474
475 =item B<-it=n>,   B<--iterations=n>
476
477 This flag causes perltidy to do B<n> complete iterations.  The reason for this
478 flag is that code beautification is an iterative process and in some
479 cases the output from perltidy can be different if it is applied a second time.
480 For most purposes the default of B<n=1> should be satisfactory.  However B<n=2>
481 can be useful when a major style change is being made, or when code is being
482 beautified on check-in to a source code control system.  It has been found to
483 be extremely rare for the output to change after 2 iterations.  If a value
484 B<n> is greater than 2 is input then a convergence test will be used to stop
485 the iterations as soon as possible, almost always after 2 iterations.  
486
487 This flag has no effect when perltidy is used to generate html.
488
489 =back
490
491 =head2 Code Indentation Control
492
493 =over 4
494
495 =item B<-ci=n>, B<--continuation-indentation=n>
496
497 Continuation indentation is extra indentation spaces applied when
498 a long line is broken.  The default is n=2, illustrated here:
499
500  my $level =   # -ci=2      
501    ( $max_index_to_go >= 0 ) ? $levels_to_go[0] : $last_output_level;
502
503 The same example, with n=0, is a little harder to read:
504
505  my $level =   # -ci=0    
506  ( $max_index_to_go >= 0 ) ? $levels_to_go[0] : $last_output_level;
507
508 The value given to B<-ci> is also used by some commands when a small
509 space is required.  Examples are commands for outdenting labels,
510 B<-ola>, and control keywords, B<-okw>.  
511
512 When default values are not used, it is suggested that the value B<n>
513 given with B<-ci=n> be no more than about one-half of the number of
514 spaces assigned to a full indentation level on the B<-i=n> command.
515
516 =item B<-sil=n> B<--starting-indentation-level=n>   
517
518 By default, perltidy examines the input file and tries to determine the
519 starting indentation level.  While it is often zero, it may not be
520 zero for a code snippet being sent from an editing session.  
521
522 To guess the starting indentation level perltidy simply assumes that
523 indentation scheme used to create the code snippet is the same as is being used
524 for the current perltidy process.  This is the only sensible guess that can be
525 made.  It should be correct if this is true, but otherwise it probably won't.
526 For example, if the input script was written with -i=2 and the current peltidy
527 flags have -i=4, the wrong initial indentation will be guessed for a code
528 snippet which has non-zero initial indentation. Likewise, if an entabbing
529 scheme is used in the input script and not in the current process then the
530 guessed indentation will be wrong.
531
532 If the default method does not work correctly, or you want to change the
533 starting level, use B<-sil=n>, to force the starting level to be n.
534
535 =item List indentation using B<-lp>, B<--line-up-parentheses>
536
537 By default, perltidy indents lists with 4 spaces, or whatever value
538 is specified with B<-i=n>.  Here is a small list formatted in this way:
539
540     # perltidy (default)
541     @month_of_year = (
542         'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
543         'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
544     );
545
546 Use the B<-lp> flag to add extra indentation to cause the data to begin
547 past the opening parentheses of a sub call or list, or opening square
548 bracket of an anonymous array, or opening curly brace of an anonymous
549 hash.  With this option, the above list would become:
550
551     # perltidy -lp
552     @month_of_year = (
553                        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
554                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
555     );
556
557 If the available line length (see B<-l=n> ) does not permit this much 
558 space, perltidy will use less.   For alternate placement of the
559 closing paren, see the next section.
560
561 This option has no effect on code BLOCKS, such as if/then/else blocks,
562 which always use whatever is specified with B<-i=n>.  Also, the
563 existence of line breaks and/or block comments between the opening and
564 closing parens may cause perltidy to temporarily revert to its default
565 method.
566
567 Note: The B<-lp> option may not be used together with the B<-t> tabs option.
568 It may, however, be used with the B<-et=n> tab method.
569
570 In addition, any parameter which significantly restricts the ability of
571 perltidy to choose newlines will conflict with B<-lp> and will cause
572 B<-lp> to be deactivated.  These include B<-io>, B<-fnl>, B<-nanl>, and
573 B<-ndnl>.  The reason is that the B<-lp> indentation style can require
574 the careful coordination of an arbitrary number of break points in
575 hierarchical lists, and these flags may prevent that.
576
577 =item B<-cti=n>, B<--closing-token-indentation>
578
579 The B<-cti=n> flag controls the indentation of a line beginning with 
580 a C<)>, C<]>, or a non-block C<}>.  Such a line receives:
581
582  -cti = 0 no extra indentation (default)
583  -cti = 1 extra indentation such that the closing token
584         aligns with its opening token.
585  -cti = 2 one extra indentation level if the line looks like:
586         );  or  ];  or  };
587  -cti = 3 one extra indentation level always
588
589 The flags B<-cti=1> and B<-cti=2> work well with the B<-lp> flag (previous
590 section).
591     
592     # perltidy -lp -cti=1
593     @month_of_year = (
594                        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
595                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
596                      );
597
598     # perltidy -lp -cti=2
599     @month_of_year = (
600                        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
601                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
602                        );
603
604 These flags are merely hints to the formatter and they may not always be
605 followed.  In particular, if -lp is not being used, the indentation for
606 B<cti=1> is constrained to be no more than one indentation level.
607
608 If desired, this control can be applied independently to each of the
609 closing container token types.  In fact, B<-cti=n> is merely an
610 abbreviation for B<-cpi=n -csbi=n -cbi=n>, where:  
611 B<-cpi> or B<--closing-paren-indentation> controls B<)>'s,
612 B<-csbi> or B<--closing-square-bracket-indentation> controls B<]>'s, 
613 B<-cbi> or B<--closing-brace-indentation> controls non-block B<}>'s. 
614
615 =item B<-icp>, B<--indent-closing-paren>
616
617 The B<-icp> flag is equivalent to
618 B<-cti=2>, described in the previous section.  The B<-nicp> flag is
619 equivalent B<-cti=0>.  They are included for backwards compatability.
620
621 =item B<-icb>, B<--indent-closing-brace>
622
623 The B<-icb> option gives one extra level of indentation to a brace which
624 terminates a code block .  For example,
625
626         if ($task) {
627             yyy();
628             }    # -icb
629         else {
630             zzz();
631             }
632
633 The default is not to do this, indicated by B<-nicb>.
634
635 =item B<-olq>, B<--outdent-long-quotes>
636
637 When B<-olq> is set, lines which is a quoted string longer than the
638 value B<maximum-line-length> will have their indentation removed to make
639 them more readable.  This is the default.  To prevent such out-denting,
640 use B<-nolq> or B<--nooutdent-long-lines>.
641
642 =item B<-oll>, B<--outdent-long-lines>
643
644 This command is equivalent to B<--outdent-long-quotes> and
645 B<--outdent-long-comments>, and it is included for compatibility with previous
646 versions of perltidy.  The negation of this also works, B<-noll> or
647 B<--nooutdent-long-lines>, and is equivalent to setting B<-nolq> and B<-nolc>.
648
649 =item Outdenting Labels: B<-ola>,  B<--outdent-labels>
650
651 This command will cause labels to be outdented by 2 spaces (or whatever B<-ci>
652 has been set to), if possible.  This is the default.  For example:
653
654         my $i;
655       LOOP: while ( $i = <FOTOS> ) {
656             chomp($i);
657             next unless $i;
658             fixit($i);
659         }
660
661 Use B<-nola> to not outdent labels. 
662
663 =item Outdenting Keywords
664
665 =over 4
666
667 =item B<-okw>,  B<--outdent-keywords>
668
669 The command B<-okw> will will cause certain leading control keywords to
670 be outdented by 2 spaces (or whatever B<-ci> has been set to), if
671 possible.  By default, these keywords are C<redo>, C<next>, C<last>,
672 C<goto>, and C<return>.  The intention is to make these control keywords
673 easier to see.  To change this list of keywords being outdented, see
674 the next section.
675
676 For example, using C<perltidy -okw> on the previous example gives:
677
678         my $i;
679       LOOP: while ( $i = <FOTOS> ) {
680             chomp($i);
681           next unless $i;
682             fixit($i);
683         }
684
685 The default is not to do this.  
686
687 =item Specifying Outdented Keywords: B<-okwl=string>,  B<--outdent-keyword-list=string>
688
689 This command can be used to change the keywords which are outdented with
690 the B<-okw> command.  The parameter B<string> is a required list of perl
691 keywords, which should be placed in quotes if there are more than one.
692 By itself, it does not cause any outdenting to occur, so the B<-okw>
693 command is still required.
694
695 For example, the commands C<-okwl="next last redo goto" -okw> will cause
696 those four keywords to be outdented.  It is probably simplest to place
697 any B<-okwl> command in a F<.perltidyrc> file.
698
699 =back
700
701 =back
702
703 =head2 Whitespace Control
704
705 Whitespace refers to the blank space between variables, operators,
706 and other code tokens.
707
708 =over 4
709
710 =item B<-fws>,  B<--freeze-whitespace>
711
712 This flag causes your original whitespace to remain unchanged, and
713 causes the rest of the whitespace commands in this section, the
714 Code Indentation section, and
715 the Comment Control section to be ignored.
716
717 =item Tightness of curly braces, parentheses, and square brackets.
718
719 Here the term "tightness" will mean the closeness with which
720 pairs of enclosing tokens, such as parentheses, contain the quantities
721 within.  A numerical value of 0, 1, or 2 defines the tightness, with
722 0 being least tight and 2 being most tight.  Spaces within containers
723 are always symmetric, so if there is a space after a C<(> then there
724 will be a space before the corresponding C<)>.
725
726 The B<-pt=n> or B<--paren-tightness=n> parameter controls the space within
727 parens.  The example below shows the effect of the three possible
728 values, 0, 1, and 2:
729
730  if ( ( my $len_tab = length( $tabstr ) ) > 0 ) {  # -pt=0
731  if ( ( my $len_tab = length($tabstr) ) > 0 ) {    # -pt=1 (default)
732  if ((my $len_tab = length($tabstr)) > 0) {        # -pt=2
733
734 When n is 0, there is always a space to the right of a '(' and to the left
735 of a ')'.  For n=2 there is never a space.  For n=1, the default, there
736 is a space unless the quantity within the parens is a single token, such
737 as an identifier or quoted string.  
738
739 Likewise, the parameter B<-sbt=n> or B<--square-bracket-tightness=n>
740 controls the space within square brackets, as illustrated below.
741
742  $width = $col[ $j + $k ] - $col[ $j ];  # -sbt=0
743  $width = $col[ $j + $k ] - $col[$j];    # -sbt=1 (default)
744  $width = $col[$j + $k] - $col[$j];      # -sbt=2 
745
746 Curly braces which do not contain code blocks are controlled by
747 the parameter B<-bt=n> or B<--brace-tightness=n>. 
748
749  $obj->{ $parsed_sql->{ 'table' }[0] };    # -bt=0
750  $obj->{ $parsed_sql->{'table'}[0] };      # -bt=1 (default)
751  $obj->{$parsed_sql->{'table'}[0]};        # -bt=2
752
753 And finally, curly braces which contain blocks of code are controlled by the
754 parameter B<-bbt=n> or B<--block-brace-tightness=n> as illustrated in the
755 example below.   
756
757  %bf = map { $_ => -M $_ } grep { /\.deb$/ } dirents '.'; # -bbt=0 (default)
758  %bf = map { $_ => -M $_ } grep {/\.deb$/} dirents '.';   # -bbt=1
759  %bf = map {$_ => -M $_} grep {/\.deb$/} dirents '.';     # -bbt=2
760
761 =item B<-sts>,   B<--space-terminal-semicolon>
762
763 Some programmers prefer a space before all terminal semicolons.  The
764 default is for no such space, and is indicated with B<-nsts> or
765 B<--nospace-terminal-semicolon>.
766
767         $i = 1 ;     #  -sts
768         $i = 1;      #  -nsts   (default)
769
770 =item B<-sfs>,   B<--space-for-semicolon>
771
772 Semicolons within B<for> loops may sometimes be hard to see,
773 particularly when commas are also present.  This option places spaces on
774 both sides of these special semicolons, and is the default.  Use
775 B<-nsfs> or B<--nospace-for-semicolon> to deactivate it.
776
777  for ( @a = @$ap, $u = shift @a ; @a ; $u = $v ) {  # -sfs (default)
778  for ( @a = @$ap, $u = shift @a; @a; $u = $v ) {    # -nsfs
779
780 =item B<-asc>,  B<--add-semicolons>
781
782 Setting B<-asc> allows perltidy to add any missing optional semicolon at the end 
783 of a line which is followed by a closing curly brace on the next line.  This
784 is the default, and may be deactivated with B<-nasc> or B<--noadd-semicolons>.
785
786 =item B<-dsm>,  B<--delete-semicolons>
787
788 Setting B<-dsm> allows perltidy to delete extra semicolons which are
789 simply empty statements.  This is the default, and may be deactivated
790 with B<-ndsm> or B<--nodelete-semicolons>.  (Such semicolons are not
791 deleted, however, if they would promote a side comment to a block
792 comment).
793
794 =item B<-aws>,  B<--add-whitespace>
795
796 Setting this option allows perltidy to add certain whitespace improve
797 code readability.  This is the default. If you do not want any
798 whitespace added, but are willing to have some whitespace deleted, use
799 B<-naws>.  (Use B<-fws> to leave whitespace completely unchanged).
800
801 =item B<-dws>,  B<--delete-old-whitespace>
802
803 Setting this option allows perltidy to remove some old whitespace
804 between characters, if necessary.  This is the default.  If you
805 do not want any old whitespace removed, use B<-ndws> or
806 B<--nodelete-old-whitespace>.
807
808 =item Detailed whitespace controls around tokens
809
810 For those who want more detailed control over the whitespace around
811 tokens, there are four parameters which can directly modify the default
812 whitespace rules built into perltidy for any token.  They are:
813
814 B<-wls=s> or B<--want-left-space=s>,
815
816 B<-nwls=s> or B<--nowant-left-space=s>,
817
818 B<-wrs=s> or B<--want-right-space=s>,
819
820 B<-nwrs=s> or B<--nowant-right-space=s>.
821
822 These parameters are each followed by a quoted string, B<s>, containing a
823 list of token types.  No more than one of each of these parameters
824 should be specified, because repeating a command-line parameter
825 always overwrites the previous one before perltidy ever sees it.
826
827 To illustrate how these are used, suppose it is desired that there be no
828 space on either side of the token types B<= + - / *>.  The following two
829 parameters would specify this desire:
830
831   -nwls="= + - / *"    -nwrs="= + - / *"
832
833 (Note that the token types are in quotes, and that they are separated by
834 spaces).  With these modified whitespace rules, the following line of math:
835
836   $root = -$b + sqrt( $b * $b - 4. * $a * $c ) / ( 2. * $a );
837
838 becomes this:
839
840   $root=-$b+sqrt( $b*$b-4.*$a*$c )/( 2.*$a );
841
842 These parameters should be considered to be hints to perltidy rather
843 than fixed rules, because perltidy must try to resolve conflicts that
844 arise between them and all of the other rules that it uses.  One
845 conflict that can arise is if, between two tokens, the left token wants
846 a space and the right one doesn't.  In this case, the token not wanting
847 a space takes priority.  
848
849 It is necessary to have a list of all token types in order to create
850 this type of input.  Such a list can be obtained by the command
851 B<--dump-token-types>.  Also try the B<-D> flag on a short snippet of code
852 and look at the .DEBUG file to see the tokenization. 
853
854 B<WARNING> Be sure to put these tokens in quotes to avoid having them
855 misinterpreted by your command shell.
856
857 =item Space between specific keywords and opening paren
858
859 When an opening paren follows a Perl keyword, no space is introduced after the
860 keyword, unless it is (by default) one of these:
861
862    my local our and or eq ne if else elsif until unless 
863    while for foreach return switch case given when
864
865 These defaults can be modified with two commands:
866
867 B<-sak=s>  or B<--space-after-keyword=s>  adds keywords.
868
869 B<-nsak=s>  or B<--nospace-after-keyword=s>  removes keywords.
870
871 where B<s> is a list of keywords (in quotes if necessary).  For example, 
872
873   my ( $a, $b, $c ) = @_;    # default
874   my( $a, $b, $c ) = @_;     # -nsak="my local our"
875
876 The abbreviation B<-nsak='*'> is equivalent to including all of the
877 keywords in the above list.
878
879 When both B<-nsak=s> and B<-sak=s> commands are included, the B<-nsak=s>
880 command is executed first.  For example, to have space after only the
881 keywords (my, local, our) you could use B<-nsak="*" -sak="my local our">.
882
883 To put a space after all keywords, see the next item.
884
885 =item Space between all keywords and opening parens
886
887 When an opening paren follows a function or keyword, no space is introduced
888 after the keyword except for the keywords noted in the previous item.  To
889 always put a space between a function or keyword and its opening paren,
890 use the command:
891
892 B<-skp>  or B<--space-keyword-paren>
893
894 You will probably also want to use the flag B<-sfp> (next item) too.
895
896 =item Space between all function names and opening parens
897
898 When an opening paren follows a function the default is not to introduce
899 a space.  To cause a space to be introduced use:
900
901 B<-sfp>  or B<--space-function-paren>
902
903   myfunc( $a, $b, $c );    # default 
904   myfunc ( $a, $b, $c );   # -sfp
905
906 You will probably also want to use the flag B<-skp> (previous item) too.
907
908 =item Trimming whitespace around C<qw> quotes
909
910 B<-tqw> or B<--trim-qw> provide the default behavior of trimming
911 spaces around multi-line C<qw> quotes and indenting them appropriately.
912
913 B<-ntqw> or B<--notrim-qw> cause leading and trailing whitespace around
914 multi-line C<qw> quotes to be left unchanged.  This option will not
915 normally be necessary, but was added for testing purposes, because in
916 some versions of perl, trimming C<qw> quotes changes the syntax tree.
917
918 =back
919
920 =head2 Comment Controls
921
922 Perltidy has a number of ways to control the appearance of both block comments
923 and side comments.  The term B<block comment> here refers to a full-line
924 comment, whereas B<side comment> will refer to a comment which appears on a
925 line to the right of some code.
926
927 =over 4
928
929 =item B<-ibc>,  B<--indent-block-comments>
930
931 Block comments normally look best when they are indented to the same
932 level as the code which follows them.  This is the default behavior, but
933 you may use B<-nibc> to keep block comments left-justified.  Here is an
934 example:
935
936              # this comment is indented      (-ibc, default)
937              if ($task) { yyy(); }
938
939 The alternative is B<-nibc>:
940
941  # this comment is not indented              (-nibc)
942              if ($task) { yyy(); }
943
944 See also the next item, B<-isbc>, as well as B<-sbc>, for other ways to
945 have some indented and some outdented block comments.
946
947 =item B<-isbc>,  B<--indent-spaced-block-comments>
948
949 If there is no leading space on the line, then the comment will not be
950 indented, and otherwise it may be.
951
952 If both B<-ibc> and B<-isbc> are set, then B<-isbc> takes priority.
953
954 =item B<-olc>, B<--outdent-long-comments>
955
956 When B<-olc> is set, lines which are full-line (block) comments longer
957 than the value B<maximum-line-length> will have their indentation
958 removed.  This is the default; use B<-nolc> to prevent outdenting.
959
960 =item B<-msc=n>,  B<--minimum-space-to-comment=n>
961
962 Side comments look best when lined up several spaces to the right of
963 code.  Perltidy will try to keep comments at least n spaces to the
964 right.  The default is n=4 spaces.
965
966 =item B<-fpsc=n>,  B<--fixed-position-side-comment=n>
967
968 This parameter tells perltidy to line up side comments in column number B<n>
969 whenever possible.  The default, n=0, is not do do this.
970
971 =item B<-hsc>, B<--hanging-side-comments>
972
973 By default, perltidy tries to identify and align "hanging side
974 comments", which are something like this:
975
976         my $IGNORE = 0;    # This is a side comment
977                            # This is a hanging side comment
978                            # And so is this
979
980 A comment is considered to be a hanging side comment if (1) it immediately
981 follows a line with a side comment, or another hanging side comment, and
982 (2) there is some leading whitespace on the line.
983 To deactivate this feature, use B<-nhsc> or B<--nohanging-side-comments>.  
984 If block comments are preceded by a blank line, or have no leading
985 whitespace, they will not be mistaken as hanging side comments.
986
987 =item Closing Side Comments
988
989 A closing side comment is a special comment which perltidy can
990 automatically create and place after the closing brace of a code block.
991 They can be useful for code maintenance and debugging.  The command
992 B<-csc> (or B<--closing-side-comments>) adds or updates closing side
993 comments.  For example, here is a small code snippet
994
995         sub message {
996             if ( !defined( $_[0] ) ) {
997                 print("Hello, World\n");
998             }
999             else {
1000                 print( $_[0], "\n" );
1001             }
1002         }
1003
1004 And here is the result of processing with C<perltidy -csc>:
1005
1006         sub message {
1007             if ( !defined( $_[0] ) ) {
1008                 print("Hello, World\n");
1009             }
1010             else {
1011                 print( $_[0], "\n" );
1012             }
1013         } ## end sub message
1014
1015 A closing side comment was added for C<sub message> in this case, but not
1016 for the C<if> and C<else> blocks, because they were below the 6 line
1017 cutoff limit for adding closing side comments.  This limit may be
1018 changed with the B<-csci> command, described below.
1019
1020 The command B<-dcsc> (or B<--delete-closing-side-comments>) reverses this 
1021 process and removes these comments.
1022
1023 Several commands are available to modify the behavior of these two basic
1024 commands, B<-csc> and B<-dcsc>:
1025
1026 =over 4
1027
1028 =item B<-csci=n>, or B<--closing-side-comment-interval=n> 
1029
1030 where C<n> is the minimum number of lines that a block must have in
1031 order for a closing side comment to be added.  The default value is
1032 C<n=6>.  To illustrate:
1033
1034         # perltidy -csci=2 -csc
1035         sub message {
1036             if ( !defined( $_[0] ) ) {
1037                 print("Hello, World\n");
1038             } ## end if ( !defined( $_[0] ))
1039             else {
1040                 print( $_[0], "\n" );
1041             } ## end else [ if ( !defined( $_[0] ))
1042         } ## end sub message
1043
1044 Now the C<if> and C<else> blocks are commented.  However, now this has
1045 become very cluttered.
1046
1047 =item B<-cscp=string>, or B<--closing-side-comment-prefix=string> 
1048
1049 where string is the prefix used before the name of the block type.  The
1050 default prefix, shown above, is C<## end>.  This string will be added to
1051 closing side comments, and it will also be used to recognize them in
1052 order to update, delete, and format them.  Any comment identified as a
1053 closing side comment will be placed just a single space to the right of
1054 its closing brace.
1055
1056 =item B<-cscl=string>, or B<--closing-side-comment-list-string> 
1057
1058 where C<string> is a list of block types to be tagged with closing side
1059 comments.  By default, all code block types preceded by a keyword or
1060 label (such as C<if>, C<sub>, and so on) will be tagged.  The B<-cscl>
1061 command changes the default list to be any selected block types; see
1062 L<Specifying Block Types>.
1063 For example, the following command
1064 requests that only C<sub>'s, labels, C<BEGIN>, and C<END> blocks be
1065 affected by any B<-csc> or B<-dcsc> operation:
1066
1067    -cscl="sub : BEGIN END"
1068
1069 =item B<-csct=n>, or B<--closing-side-comment-maximum-text=n> 
1070
1071 The text appended to certain block types, such as an C<if> block, is
1072 whatever lies between the keyword introducing the block, such as C<if>,
1073 and the opening brace.  Since this might be too much text for a side
1074 comment, there needs to be a limit, and that is the purpose of this
1075 parameter.  The default value is C<n=20>, meaning that no additional
1076 tokens will be appended to this text after its length reaches 20
1077 characters.  Omitted text is indicated with C<...>.  (Tokens, including
1078 sub names, are never truncated, however, so actual lengths may exceed
1079 this).  To illustrate, in the above example, the appended text of the
1080 first block is C< ( !defined( $_[0] )...>.  The existing limit of
1081 C<n=20> caused this text to be truncated, as indicated by the C<...>.  See
1082 the next flag for additional control of the abbreviated text.
1083
1084 =item B<-cscb>, or B<--closing-side-comments-balanced> 
1085
1086 As discussed in the previous item, when the
1087 closing-side-comment-maximum-text limit is exceeded the comment text must
1088 be truncated.  Older versions of perltidy terminated with three dots, and this
1089 can still be achieved with -ncscb:
1090
1091   perltidy -csc -ncscb
1092   } ## end foreach my $foo (sort { $b cmp $a ...
1093
1094 However this causes a problem with editors editors which cannot recognize
1095 comments or are not configured to do so because they cannot "bounce" around in
1096 the text correctly.  The B<-cscb> flag has been added to
1097 help them by appending appropriate balancing structure:
1098
1099   perltidy -csc -cscb
1100   } ## end foreach my $foo (sort { $b cmp $a ... })
1101
1102 The default is B<-cscb>.
1103
1104 =item B<-csce=n>, or B<--closing-side-comment-else-flag=n> 
1105
1106 The default, B<n=0>, places the text of the opening C<if> statement after any
1107 terminal C<else>.
1108
1109 If B<n=2> is used, then each C<elsif> is also given the text of the opening
1110 C<if> statement.  Also, an C<else> will include the text of a preceding
1111 C<elsif> statement.  Note that this may result some long closing
1112 side comments.
1113
1114 If B<n=1> is used, the results will be the same as B<n=2> whenever the
1115 resulting line length is less than the maximum allowed.
1116 =item B<-cscb>, or B<--closing-side-comments-balanced> 
1117
1118 When using closing-side-comments, and the closing-side-comment-maximum-text
1119 limit is exceeded, then the comment text must be abbreviated.  
1120 It is terminated with three dots if the B<-cscb> flag is negated:
1121
1122   perltidy -csc -ncscb
1123   } ## end foreach my $foo (sort { $b cmp $a ...
1124
1125 This causes a problem with older editors which do not recognize comments
1126 because they cannot "bounce" around in the text correctly.  The B<-cscb>
1127 flag tries to help them by appending appropriate terminal balancing structures:
1128
1129   perltidy -csc -cscb
1130   } ## end foreach my $foo (sort { $b cmp $a ... })
1131
1132 The default is B<-cscb>.  
1133
1134
1135 =item B<-cscw>, or B<--closing-side-comment-warnings> 
1136
1137 This parameter is intended to help make the initial transition to the use of
1138 closing side comments.  
1139 It causes two
1140 things to happen if a closing side comment replaces an existing, different
1141 closing side comment:  first, an error message will be issued, and second, the
1142 original side comment will be placed alone on a new specially marked comment
1143 line for later attention. 
1144
1145 The intent is to avoid clobbering existing hand-written side comments
1146 which happen to match the pattern of closing side comments. This flag
1147 should only be needed on the first run with B<-csc>.
1148
1149 =back
1150
1151 B<Important Notes on Closing Side Comments:> 
1152
1153 =over 4
1154
1155 =item *
1156
1157 Closing side comments are only placed on lines terminated with a closing
1158 brace.  Certain closing styles, such as the use of cuddled elses
1159 (B<-ce>), preclude the generation of some closing side comments.
1160
1161 =item *
1162
1163 Please note that adding or deleting of closing side comments takes
1164 place only through the commands B<-csc> or B<-dcsc>.  The other commands,
1165 if used, merely modify the behavior of these two commands.  
1166
1167 =item *
1168
1169 It is recommended that the B<-cscw> flag be used along with B<-csc> on
1170 the first use of perltidy on a given file.  This will prevent loss of
1171 any existing side comment data which happens to have the csc prefix.
1172
1173 =item *
1174
1175 Once you use B<-csc>, you should continue to use it so that any
1176 closing side comments remain correct as code changes.  Otherwise, these
1177 comments will become incorrect as the code is updated.
1178
1179 =item *
1180
1181 If you edit the closing side comments generated by perltidy, you must also
1182 change the prefix to be different from the closing side comment prefix.
1183 Otherwise, your edits will be lost when you rerun perltidy with B<-csc>.   For
1184 example, you could simply change C<## end> to be C<## End>, since the test is
1185 case sensitive.  You may also want to use the B<-ssc> flag to keep these
1186 modified closing side comments spaced the same as actual closing side comments.
1187
1188 =item *
1189
1190 Temporarily generating closing side comments is a useful technique for
1191 exploring and/or debugging a perl script, especially one written by someone
1192 else.  You can always remove them with B<-dcsc>.
1193
1194 =back
1195
1196 =item Static Block Comments
1197
1198 Static block comments are block comments with a special leading pattern,
1199 C<##> by default, which will be treated slightly differently from other
1200 block comments.  They effectively behave as if they had glue along their
1201 left and top edges, because they stick to the left edge and previous line
1202 when there is no blank spaces in those places.  This option is
1203 particularly useful for controlling how commented code is displayed.
1204
1205 =over 4
1206
1207 =item B<-sbc>, B<--static-block-comments>
1208
1209 When B<-sbc> is used, a block comment with a special leading pattern, C<##> by
1210 default, will be treated specially. 
1211
1212 Comments so identified  are treated as follows: 
1213
1214 =over 4
1215
1216 =item *
1217
1218 If there is no leading space on the line, then the comment will not
1219 be indented, and otherwise it may be,
1220
1221 =item *
1222
1223 no new blank line will be
1224 inserted before such a comment, and 
1225
1226 =item *
1227
1228 such a comment will never become
1229 a hanging side comment.  
1230
1231 =back
1232
1233 For example, assuming C<@month_of_year> is
1234 left-adjusted:
1235
1236     @month_of_year = (    # -sbc (default)
1237         'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
1238     ##  'Dec', 'Nov'
1239         'Nov', 'Dec');
1240
1241 Without this convention, the above code would become
1242
1243     @month_of_year = (   # -nsbc
1244         'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
1245   
1246         ##  'Dec', 'Nov'
1247         'Nov', 'Dec'
1248     );
1249
1250 which is not as clear.
1251 The default is to use B<-sbc>.  This may be deactivated with B<-nsbc>.
1252
1253 =item B<-sbcp=string>, B<--static-block-comment-prefix=string>
1254
1255 This parameter defines the prefix used to identify static block comments
1256 when the B<-sbc> parameter is set.  The default prefix is C<##>,
1257 corresponding to C<-sbcp=##>.  The prefix is actually part of a perl 
1258 pattern used to match lines and it must either begin with C<#> or C<^#>.  
1259 In the first case a prefix ^\s* will be added to match any leading
1260 whitespace, while in the second case the pattern will match only
1261 comments with no leading whitespace.  For example, to
1262 identify all comments as static block comments, one would use C<-sbcp=#>.
1263 To identify all left-adjusted comments as static block comments, use C<-sbcp='^#'>.
1264
1265 Please note that B<-sbcp> merely defines the pattern used to identify static
1266 block comments; it will not be used unless the switch B<-sbc> is set.  Also,
1267 please be aware that since this string is used in a perl regular expression
1268 which identifies these comments, it must enable a valid regular expression to
1269 be formed.
1270
1271 A pattern which can be useful is:
1272
1273     -sbcp=^#{2,}[^\s#] 
1274
1275 This pattern requires a static block comment to have at least one character
1276 which is neither a # nor a space.  It allows a line containing only '#'
1277 characters to be rejected as a static block comment.  Such lines are often used
1278 at the start and end of header information in subroutines and should not be
1279 separated from the intervening comments, which typically begin with just a
1280 single '#'.
1281
1282 =item B<-osbc>, B<--outdent-static-block-comments>
1283
1284 The command B<-osbc> will will cause static block comments to be outdented by 2
1285 spaces (or whatever B<-ci=n> has been set to), if possible.
1286
1287 =back
1288
1289 =item Static Side Comments
1290
1291 Static side comments are side comments with a special leading pattern.
1292 This option can be useful for controlling how commented code is displayed
1293 when it is a side comment.
1294
1295 =over 4
1296
1297 =item B<-ssc>, B<--static-side-comments>
1298
1299 When B<-ssc> is used, a side comment with a static leading pattern, which is
1300 C<##> by default, will be be spaced only a single space from previous
1301 character, and it will not be vertically aligned with other side comments.
1302
1303 The default is B<-nssc>.
1304
1305 =item B<-sscp=string>, B<--static-side-comment-prefix=string>
1306
1307 This parameter defines the prefix used to identify static side comments
1308 when the B<-ssc> parameter is set.  The default prefix is C<##>,
1309 corresponding to C<-sscp=##>.  
1310
1311 Please note that B<-sscp> merely defines the pattern used to identify
1312 static side comments; it will not be used unless the switch B<-ssc> is
1313 set.  Also, note that this string is used in a perl regular expression
1314 which identifies these comments, so it must enable a valid regular
1315 expression to be formed.
1316
1317 =back
1318
1319
1320 =back
1321
1322 =head2 Skipping Selected Sections of Code
1323
1324 Selected lines of code may be passed verbatim to the output without any
1325 formatting.  This feature is enabled by default but can be disabled with
1326 the B<--noformat-skipping> or B<-nfs> flag.  It should be used sparingly to
1327 avoid littering code with markers, but it might be helpful for working
1328 around occasional problems.  For example it might be useful for keeping
1329 the indentation of old commented code unchanged, keeping indentation of
1330 long blocks of aligned comments unchanged, keeping certain list
1331 formatting unchanged, or working around a glitch in perltidy.
1332
1333 =over 4
1334
1335 =item B<-fs>,  B<--format-skipping>
1336
1337 This flag, which is enabled by default, causes any code between
1338 special beginning and ending comment markers to be passed to the
1339 output without formatting.  The default beginning marker is #<<<
1340 and the default ending marker is #>>> but they
1341 may be changed (see next items below).  Additional text may appear on
1342 these special comment lines provided that it is separated from the
1343 marker by at least one space.  For example
1344
1345  #<<<  do not let perltidy touch this
1346     my @list = (1,
1347                 1, 1,
1348                 1, 2, 1,
1349                 1, 3, 3, 1,
1350                 1, 4, 6, 4, 1,);
1351  #>>>
1352
1353 The comment markers may be placed at any location that a block comment may
1354 appear.  If they do not appear to be working, use the -log flag and examine the
1355 F<.LOG> file.  Use B<-nfs> to disable this feature.
1356
1357 =item B<-fsb=string>,  B<--format-skipping-begin=string>
1358
1359 The B<-fsb=string> parameter may be used to change the beginning marker for
1360 format skipping.  The default is equivalent to -fsb='#<<<'.  The string that
1361 you enter must begin with a # and should be in quotes as necessary to get past
1362 the command shell of your system.  It is actually the leading text of a pattern
1363 that is constructed by appending a '\s', so you must also include backslashes
1364 for characters to be taken literally rather than as patterns.  
1365
1366 Some examples show how example strings become patterns:
1367
1368  -fsb='#\{\{\{' becomes /^#\{\{\{\s/  which matches  #{{{ but not #{{{{
1369  -fsb='#\*\*'   becomes /^#\*\*\s/    which matches  #** but not #***
1370  -fsb='#\*{2,}' becomes /^#\*{2,}\s/  which matches  #** and #***** 
1371
1372 =item B<-fse=string>,  B<--format-skipping-end=string>
1373
1374 The B<-fsb=string> is the corresponding parameter used to change the
1375 ending marker for format skipping.  The default is equivalent to
1376 -fse='#<<<'.  
1377
1378 =back
1379
1380 =head2 Line Break Control
1381
1382 The parameters in this section control breaks after
1383 non-blank lines of code.  Blank lines are controlled
1384 separately by parameters in the section L<Blank Line
1385 Control>.
1386
1387 =over 4
1388
1389 =item B<-fnl>,  B<--freeze-newlines>
1390
1391 If you do not want any changes to the line breaks within
1392 lines of code in your script, set
1393 B<-fnl>, and they will remain fixed, and the rest of the commands in
1394 this section and sections 
1395 L<Controlling List Formatting>,
1396 L<Retaining or Ignoring Existing Line Breaks>. 
1397 You may want to use B<-noll> with this.
1398
1399 Note: If you also want to keep your blank lines exactly
1400 as they are, you can use the B<-fbl> flag which is described
1401 in the section L<Blank Line Control>.
1402
1403 =item B<-ce>,   B<--cuddled-else>
1404
1405 Enable the "cuddled else" style, in which C<else> and C<elsif> are
1406 follow immediately after the curly brace closing the previous block.
1407 The default is not to use cuddled elses, and is indicated with the flag
1408 B<-nce> or B<--nocuddled-else>.  Here is a comparison of the
1409 alternatives:
1410
1411   if ($task) {
1412       yyy();
1413   } else {    # -ce
1414       zzz();
1415   }
1416
1417   if ($task) {
1418         yyy();
1419   }
1420   else {    # -nce  (default)
1421         zzz();
1422   }
1423
1424 =item B<-bl>,    B<--opening-brace-on-new-line>     
1425
1426 Use the flag B<-bl> to place the opening brace on a new line:
1427
1428   if ( $input_file eq '-' )    # -bl 
1429   {                          
1430       important_function();
1431   }
1432
1433 This flag applies to all structural blocks, including named sub's (unless
1434 the B<-sbl> flag is set -- see next item).
1435
1436 The default style, B<-nbl>, places an opening brace on the same line as
1437 the keyword introducing it.  For example,
1438
1439   if ( $input_file eq '-' ) {   # -nbl (default)
1440
1441 =item B<-sbl>,    B<--opening-sub-brace-on-new-line>     
1442
1443 The flag B<-sbl> can be used to override the value of B<-bl> for
1444 the opening braces of named sub's.  For example, 
1445
1446  perltidy -sbl
1447
1448 produces this result:
1449
1450  sub message
1451  {
1452     if (!defined($_[0])) {
1453         print("Hello, World\n");
1454     }
1455     else {
1456         print($_[0], "\n");
1457     }
1458  }
1459
1460 This flag is negated with B<-nsbl>.  If B<-sbl> is not specified,
1461 the value of B<-bl> is used.
1462
1463 =item B<-asbl>,    B<--opening-anonymous-sub-brace-on-new-line>     
1464
1465 The flag B<-asbl> is like the B<-sbl> flag except that it applies
1466 to anonymous sub's instead of named subs. For example
1467
1468  perltidy -asbl
1469
1470 produces this result:
1471
1472  $a = sub
1473  {
1474      if ( !defined( $_[0] ) ) {
1475          print("Hello, World\n");
1476      }
1477      else {
1478          print( $_[0], "\n" );
1479      }
1480  };
1481
1482 This flag is negated with B<-nasbl>, and the default is B<-nasbl>.
1483
1484 =item B<-bli>,    B<--brace-left-and-indent>     
1485
1486 The flag B<-bli> is the same as B<-bl> but in addition it causes one 
1487 unit of continuation indentation ( see B<-ci> ) to be placed before 
1488 an opening and closing block braces.
1489
1490 For example,
1491
1492         if ( $input_file eq '-' )    # -bli
1493           {
1494             important_function();
1495           }
1496
1497 By default, this extra indentation occurs for blocks of type:
1498 B<if>, B<elsif>, B<else>, B<unless>, B<for>, B<foreach>, B<sub>, 
1499 B<while>, B<until>, and also with a preceding label.  The next item
1500 shows how to change this.
1501
1502 =item B<-blil=s>,    B<--brace-left-and-indent-list=s>     
1503
1504 Use this parameter to change the types of block braces for which the
1505 B<-bli> flag applies; see L<Specifying Block Types>.  For example,
1506 B<-blil='if elsif else'> would apply it to only C<if/elsif/else> blocks.
1507
1508 =item B<-bar>,    B<--opening-brace-always-on-right>     
1509
1510 The default style, B<-nbl> places the opening code block brace on a new
1511 line if it does not fit on the same line as the opening keyword, like
1512 this:
1513
1514         if ( $bigwasteofspace1 && $bigwasteofspace2
1515           || $bigwasteofspace3 && $bigwasteofspace4 )
1516         {
1517             big_waste_of_time();
1518         }
1519
1520 To force the opening brace to always be on the right, use the B<-bar>
1521 flag.  In this case, the above example becomes
1522
1523         if ( $bigwasteofspace1 && $bigwasteofspace2
1524           || $bigwasteofspace3 && $bigwasteofspace4 ) {
1525             big_waste_of_time();
1526         }
1527
1528 A conflict occurs if both B<-bl> and B<-bar> are specified.
1529
1530 =item B<-otr>,  B<--opening-token-right> and related flags
1531
1532 The B<-otr> flag is a hint that perltidy should not place a break between a
1533 comma and an opening token.  For example:
1534
1535     # default formatting
1536     push @{ $self->{$module}{$key} },
1537       {
1538         accno       => $ref->{accno},
1539         description => $ref->{description}
1540       };
1541
1542     # perltidy -otr
1543     push @{ $self->{$module}{$key} }, {
1544         accno       => $ref->{accno},
1545         description => $ref->{description}
1546       };
1547
1548 The flag B<-otr> is actually a synonym for three other flags
1549 which can be used to control parens, hash braces, and square brackets
1550 separately if desired:
1551
1552   -opr  or --opening-paren-right
1553   -ohbr or --opening-hash-brace-right
1554   -osbr or --opening-square-bracket-right
1555
1556 =item Vertical tightness of non-block curly braces, parentheses, and square brackets.
1557
1558 These parameters control what shall be called vertical tightness.  Here are the
1559 main points:
1560
1561 =over 4
1562
1563 =item *
1564
1565 Opening tokens (except for block braces) are controlled by B<-vt=n>, or
1566 B<--vertical-tightness=n>, where
1567
1568  -vt=0 always break a line after opening token (default). 
1569  -vt=1 do not break unless this would produce more than one 
1570          step in indentation in a line.
1571  -vt=2 never break a line after opening token
1572
1573 =item *
1574
1575 You must also use the B<-lp> flag when you use the B<-vt> flag; the
1576 reason is explained below.
1577
1578 =item *
1579
1580 Closing tokens (except for block braces) are controlled by B<-vtc=n>, or
1581 B<--vertical-tightness-closing=n>, where
1582
1583  -vtc=0 always break a line before a closing token (default), 
1584  -vtc=1 do not break before a closing token which is followed 
1585         by a semicolon or another closing token, and is not in 
1586         a list environment.
1587  -vtc=2 never break before a closing token.
1588
1589 The rules for B<-vtc=1> are designed to maintain a reasonable balance
1590 between tightness and readability in complex lists.
1591
1592 =item *
1593
1594 Different controls may be applied to to different token types,
1595 and it is also possible to control block braces; see below.
1596
1597 =item *
1598
1599 Finally, please note that these vertical tightness flags are merely
1600 hints to the formatter, and it cannot always follow them.  Things which
1601 make it difficult or impossible include comments, blank lines, blocks of
1602 code within a list, and possibly the lack of the B<-lp> parameter.
1603 Also, these flags may be ignored for very small lists (2 or 3 lines in
1604 length).
1605
1606 =back
1607
1608 Here are some examples: 
1609
1610     # perltidy -lp -vt=0 -vtc=0
1611     %romanNumerals = (
1612                        one   => 'I',
1613                        two   => 'II',
1614                        three => 'III',
1615                        four  => 'IV',
1616     );
1617
1618     # perltidy -lp -vt=1 -vtc=0
1619     %romanNumerals = ( one   => 'I',
1620                        two   => 'II',
1621                        three => 'III',
1622                        four  => 'IV',
1623     );
1624
1625     # perltidy -lp -vt=1 -vtc=1
1626     %romanNumerals = ( one   => 'I',
1627                        two   => 'II',
1628                        three => 'III',
1629                        four  => 'IV', );
1630
1631 The difference between B<-vt=1> and B<-vt=2> is shown here:
1632
1633     # perltidy -lp -vt=1 
1634     $init->add(
1635                 mysprintf( "(void)find_threadsv(%s);",
1636                            cstring( $threadsv_names[ $op->targ ] )
1637                 )
1638     );
1639
1640     # perltidy -lp -vt=2 
1641     $init->add( mysprintf( "(void)find_threadsv(%s);",
1642                            cstring( $threadsv_names[ $op->targ ] )
1643                 )
1644     );
1645
1646 With B<-vt=1>, the line ending in C<add(> does not combine with the next
1647 line because the next line is not balanced.  This can help with
1648 readability, but B<-vt=2> can be used to ignore this rule.
1649
1650 The tightest, and least readable, code is produced with both C<-vt=2> and
1651 C<-vtc=2>:
1652
1653     # perltidy -lp -vt=2 -vtc=2
1654     $init->add( mysprintf( "(void)find_threadsv(%s);",
1655                            cstring( $threadsv_names[ $op->targ ] ) ) );
1656
1657 Notice how the code in all of these examples collapses vertically as
1658 B<-vt> increases, but the indentation remains unchanged.  This is
1659 because perltidy implements the B<-vt> parameter by first formatting as
1660 if B<-vt=0>, and then simply overwriting one output line on top of the
1661 next, if possible, to achieve the desired vertical tightness.  The
1662 B<-lp> indentation style has been designed to allow this vertical
1663 collapse to occur, which is why it is required for the B<-vt> parameter.
1664
1665 The B<-vt=n> and B<-vtc=n> parameters apply to each type of container
1666 token.  If desired, vertical tightness controls can be applied
1667 independently to each of the closing container token types.
1668
1669 The parameters for controlling parentheses are B<-pvt=n> or
1670 B<--paren-vertical-tightness=n>, and B<-pcvt=n> or
1671 B<--paren-vertical-tightness-closing=n>.
1672
1673 Likewise, the parameters for square brackets are B<-sbvt=n> or
1674 B<--square-bracket-vertical-tightness=n>, and B<-sbcvt=n> or
1675 B<--square-bracket-vertical-tightness-closing=n>.
1676
1677 Finally, the parameters for controlling non-code block braces are
1678 B<-bvt=n> or B<--brace-vertical-tightness=n>, and B<-bcvt=n> or
1679 B<--brace-vertical-tightness-closing=n>.
1680
1681 In fact, the parameter B<-vt=n> is actually just an abbreviation for
1682 B<-pvt=n -bvt=n sbvt=n>, and likewise B<-vtc=n> is an abbreviation
1683 for B<-pvtc=n -bvtc=n sbvtc=n>.
1684
1685 =item B<-bbvt=n> or B<--block-brace-vertical-tightness=n>
1686
1687 The B<-bbvt=n> flag is just like the B<-vt=n> flag but applies
1688 to opening code block braces.
1689
1690  -bbvt=0 break after opening block brace (default). 
1691  -bbvt=1 do not break unless this would produce more than one 
1692          step in indentation in a line.
1693  -bbvt=2 do not break after opening block brace.
1694
1695 It is necessary to also use either B<-bl> or B<-bli> for this to work,
1696 because, as with other vertical tightness controls, it is implemented by
1697 simply overwriting a line ending with an opening block brace with the
1698 subsequent line.  For example:
1699
1700     # perltidy -bli -bbvt=0
1701     if ( open( FILE, "< $File" ) )
1702       {
1703         while ( $File = <FILE> )
1704           {
1705             $In .= $File;
1706             $count++;
1707           }
1708         close(FILE);
1709       }
1710
1711     # perltidy -bli -bbvt=1
1712     if ( open( FILE, "< $File" ) )
1713       { while ( $File = <FILE> )
1714           { $In .= $File;
1715             $count++;
1716           }
1717         close(FILE);
1718       }
1719
1720 By default this applies to blocks associated with keywords B<if>,
1721 B<elsif>, B<else>, B<unless>, B<for>, B<foreach>, B<sub>, B<while>,
1722 B<until>, and also with a preceding label.  This can be changed with
1723 the parameter B<-bbvtl=string>, or
1724 B<--block-brace-vertical-tightness-list=string>, where B<string> is a
1725 space-separated list of block types.  For more information on the
1726 possible values of this string, see L<Specifying Block Types>
1727
1728 For example, if we want to just apply this style to C<if>,
1729 C<elsif>, and C<else> blocks, we could use 
1730 C<perltidy -bli -bbvt=1 -bbvtl='if elsif else'>.
1731
1732 There is no vertical tightness control for closing block braces; with
1733 the exception of one-line blocks, they will normally remain on a 
1734 separate line.
1735
1736 =item B<-sot>,  B<--stack-opening-tokens> and related flags
1737
1738 The B<-sot> flag tells perltidy to "stack" opening tokens
1739 when possible to avoid lines with isolated opening tokens.
1740
1741 For example:
1742
1743     # default
1744     $opt_c = Text::CSV_XS->new(
1745         {
1746             binary       => 1,
1747             sep_char     => $opt_c,
1748             always_quote => 1,
1749         }
1750     );
1751
1752     # -sot
1753     $opt_c = Text::CSV_XS->new( {
1754             binary       => 1,
1755             sep_char     => $opt_c,
1756             always_quote => 1,
1757         }
1758     );
1759
1760 For detailed control of individual closing tokens the following
1761 controls can be used:
1762
1763   -sop  or --stack-opening-paren
1764   -sohb or --stack-opening-hash-brace
1765   -sosb or --stack-opening-square-bracket
1766
1767 The flag B<-sot> is a synonym for B<-sop -sohb -sosb>.
1768
1769 =item B<-sct>,  B<--stack-closing-tokens> and related flags
1770
1771 The B<-sct> flag tells perltidy to "stack" closing tokens
1772 when possible to avoid lines with isolated closing tokens.
1773
1774 For example:
1775
1776     # default
1777     $opt_c = Text::CSV_XS->new(
1778         {
1779             binary       => 1,
1780             sep_char     => $opt_c,
1781             always_quote => 1,
1782         }
1783     );
1784
1785     # -sct
1786     $opt_c = Text::CSV_XS->new(
1787         {
1788             binary       => 1,
1789             sep_char     => $opt_c,
1790             always_quote => 1,
1791         } );
1792
1793 The B<-sct> flag is somewhat similar to the B<-vtc> flags, and in some
1794 cases it can give a similar result.  The difference is that the B<-vtc>
1795 flags try to avoid lines with leading opening tokens by "hiding" them at
1796 the end of a previous line, whereas the B<-sct> flag merely tries to
1797 reduce the number of lines with isolated closing tokens by stacking them
1798 but does not try to hide them.  For example:
1799
1800     # -vtc=2
1801     $opt_c = Text::CSV_XS->new(
1802         {
1803             binary       => 1,
1804             sep_char     => $opt_c,
1805             always_quote => 1, } );
1806
1807 For detailed control of the stacking of individual closing tokens the
1808 following controls can be used:
1809
1810   -scp  or --stack-closing-paren
1811   -schb or --stack-closing-hash-brace
1812   -scsb or --stack-closing-square-bracket
1813
1814 The flag B<-sct> is a synonym for B<-scp -schb -scsb>.
1815
1816 =item B<-dnl>,  B<--delete-old-newlines>
1817
1818 By default, perltidy first deletes all old line break locations, and then it
1819 looks for good break points to match the desired line length.  Use B<-ndnl>
1820 or  B<--nodelete-old-newlines> to force perltidy to retain all old line break
1821 points.  
1822
1823 =item B<-anl>,  B<--add-newlines>
1824
1825 By default, perltidy will add line breaks when necessary to create
1826 continuations of long lines and to improve the script appearance.  Use
1827 B<-nanl> or B<--noadd-newlines> to prevent any new line breaks.  
1828
1829 This flag does not prevent perltidy from eliminating existing line
1830 breaks; see B<--freeze-newlines> to completely prevent changes to line
1831 break points.
1832
1833 =item Controlling whether perltidy breaks before or after operators
1834
1835 Four command line parameters provide some control over whether
1836 a line break should be before or after specific token types.
1837 Two parameters give detailed control:
1838
1839 B<-wba=s> or B<--want-break-after=s>, and
1840
1841 B<-wbb=s> or B<--want-break-before=s>.
1842
1843 These parameters are each followed by a quoted string, B<s>, containing
1844 a list of token types (separated only by spaces).  No more than one of each
1845 of these parameters should be specified, because repeating a
1846 command-line parameter always overwrites the previous one before
1847 perltidy ever sees it.
1848
1849 By default, perltidy breaks B<after> these token types:
1850   % + - * / x != == >= <= =~ !~ < >  | & 
1851   = **= += *= &= <<= &&= -= /= |= >>= ||= //= .= %= ^= x=
1852
1853 And perltidy breaks B<before> these token types by default:
1854   . << >> -> && || //
1855
1856 To illustrate, to cause a break after a concatenation operator, C<'.'>,
1857 rather than before it, the command line would be
1858
1859   -wba="."
1860
1861 As another example, the following command would cause a break before 
1862 math operators C<'+'>, C<'-'>, C<'/'>, and C<'*'>:
1863
1864   -wbb="+ - / *"
1865
1866 These commands should work well for most of the token types that perltidy uses
1867 (use B<--dump-token-types> for a list).  Also try the B<-D> flag on a short
1868 snippet of code and look at the .DEBUG file to see the tokenization.  However,
1869 for a few token types there may be conflicts with hardwired logic which cause
1870 unexpected results.  One example is curly braces, which should be controlled
1871 with the parameter B<bl> provided for that purpose.
1872
1873 B<WARNING> Be sure to put these tokens in quotes to avoid having them
1874 misinterpreted by your command shell.
1875
1876 Two additional parameters are available which, though they provide no further
1877 capability, can simplify input are:
1878
1879 B<-baao> or B<--break-after-all-operators>,
1880
1881 B<-bbao> or B<--break-before-all-operators>.
1882
1883 The -baao sets the default to be to break after all of the following operators:
1884
1885     % + - * / x != == >= <= =~ !~ < > | & 
1886     = **= += *= &= <<= &&= -= /= |= >>= ||= //= .= %= ^= x=
1887     . : ? && || and or err xor
1888
1889 and the B<-bbao> flag sets the default to break before all of these operators.
1890 These can be used to define an initial break preference which can be fine-tuned
1891 with the B<-wba> and B<-wbb> flags.  For example, to break before all operators
1892 except an B<=> one could use --bbao -wba='=' rather than listing every
1893 single perl operator except B<=> on a -wbb flag.
1894
1895 =back
1896
1897 =head2 Controlling List Formatting
1898
1899 Perltidy attempts to place comma-separated arrays of values in tables
1900 which look good.  Its default algorithms usually work well, and they
1901 have been improving with each release, but several parameters are
1902 available to control list formatting.
1903
1904 =over 4
1905
1906 =item B<-boc>,  B<--break-at-old-comma-breakpoints>
1907
1908 This flag tells perltidy to try to break at all old commas.  This is not
1909 the default.  Normally, perltidy makes a best guess at list formatting,
1910 and seldom uses old comma breakpoints.  Usually this works well,
1911 but consider:
1912
1913     my @list = (1,
1914                 1, 1,
1915                 1, 2, 1,
1916                 1, 3, 3, 1,
1917                 1, 4, 6, 4, 1,);
1918
1919 The default formatting will flatten this down to one line:
1920
1921     # perltidy (default)
1922     my @list = ( 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, );
1923
1924 which hides the structure. Using B<-boc>, plus additional flags
1925 to retain the original style, yields
1926
1927     # perltidy -boc -lp -pt=2 -vt=1 -vtc=1
1928     my @list = (1,
1929                 1, 1,
1930                 1, 2, 1,
1931                 1, 3, 3, 1,
1932                 1, 4, 6, 4, 1,);
1933
1934 A disadvantage of this flag is that all tables in the file
1935 must already be nicely formatted.  For another possibility see
1936 the -fs flag in L<Skipping Selected Sections of Code>.
1937
1938 =item B<-mft=n>,  B<--maximum-fields-per-table=n>
1939
1940 If the computed number of fields for any table exceeds B<n>, then it
1941 will be reduced to B<n>.  The default value for B<n> is a large number,
1942 40.  While this value should probably be left unchanged as a general
1943 rule, it might be used on a small section of code to force a list to
1944 have a particular number of fields per line, and then either the B<-boc>
1945 flag could be used to retain this formatting, or a single comment could
1946 be introduced somewhere to freeze the formatting in future applications
1947 of perltidy.
1948
1949     # perltidy -mft=2
1950     @month_of_year = (    
1951         'Jan', 'Feb',
1952         'Mar', 'Apr',
1953         'May', 'Jun',
1954         'Jul', 'Aug',
1955         'Sep', 'Oct',
1956         'Nov', 'Dec'
1957     );
1958
1959 =item B<-cab=n>,  B<--comma-arrow-breakpoints=n>
1960
1961 A comma which follows a comma arrow, '=>', requires special
1962 consideration.  In a long list, it is common to break at all such
1963 commas.  This parameter can be used to control how perltidy breaks at
1964 these commas.  (However, it will have no effect if old comma breaks are
1965 being forced because B<-boc> is used).  The possible values of B<n> are:
1966
1967  n=0 break at all commas after =>  
1968  n=1 stable: break at all commas after => unless this would break
1969      an existing one-line container (default)
1970  n=2 break at all commas after =>, but try to form the maximum
1971      maximum one-line container lengths
1972  n=3 do not treat commas after => specially at all 
1973
1974 For example, given the following single line, perltidy by default will
1975 not add any line breaks because it would break the existing one-line
1976 container:
1977
1978     bless { B => $B, Root => $Root } => $package;
1979
1980 Using B<-cab=0> will force a break after each comma-arrow item:
1981
1982     # perltidy -cab=0:
1983     bless {
1984         B    => $B,
1985         Root => $Root
1986     } => $package;
1987
1988 If perltidy is subsequently run with this container broken, then by
1989 default it will break after each '=>' because the container is now
1990 broken.  To reform a one-line container, the parameter B<-cab=2> would
1991 be needed.
1992
1993 The flag B<-cab=3> can be used to prevent these commas from being
1994 treated specially.  In this case, an item such as "01" => 31 is
1995 treated as a single item in a table.  The number of fields in this table
1996 will be determined by the same rules that are used for any other table.
1997 Here is an example.
1998     
1999     # perltidy -cab=3
2000     my %last_day = (
2001         "01" => 31, "02" => 29, "03" => 31, "04" => 30,
2002         "05" => 31, "06" => 30, "07" => 31, "08" => 31,
2003         "09" => 30, "10" => 31, "11" => 30, "12" => 31
2004     );
2005
2006 =back
2007
2008 =head2 Retaining or Ignoring Existing Line Breaks
2009
2010 Several additional parameters are available for controlling the extent
2011 to which line breaks in the input script influence the output script.
2012 In most cases, the default parameter values are set so that, if a choice
2013 is possible, the output style follows the input style.  For example, if
2014 a short logical container is broken in the input script, then the
2015 default behavior is for it to remain broken in the output script.
2016
2017 Most of the parameters in this section would only be required for a
2018 one-time conversion of a script from short container lengths to longer
2019 container lengths.  The opposite effect, of converting long container
2020 lengths to shorter lengths, can be obtained by temporarily using a short
2021 maximum line length.
2022
2023 =over 4
2024
2025 =item B<-bol>,  B<--break-at-old-logical-breakpoints>
2026
2027 By default, if a logical expression is broken at a C<&&>, C<||>, C<and>,
2028 or C<or>, then the container will remain broken.  Also, breaks
2029 at internal keywords C<if> and C<unless> will normally be retained.
2030 To prevent this, and thus form longer lines, use B<-nbol>.
2031
2032 =item B<-bok>,  B<--break-at-old-keyword-breakpoints>
2033
2034 By default, perltidy will retain a breakpoint before keywords which may
2035 return lists, such as C<sort> and <map>.  This allows chains of these
2036 operators to be displayed one per line.  Use B<-nbok> to prevent
2037 retaining these breakpoints.
2038
2039 =item B<-bot>,  B<--break-at-old-ternary-breakpoints>
2040
2041 By default, if a conditional (ternary) operator is broken at a C<:>,
2042 then it will remain broken.  To prevent this, and thereby
2043 form longer lines, use B<-nbot>.
2044
2045 =item B<-boa>,  B<--break-at-old-attribute-breakpoints>
2046
2047 By default, if an attribute list is broken at a C<:> in the source file, then
2048 it will remain broken.  For example, given the following code, the line breaks
2049 at the ':'s will be retained:
2050        
2051                     my @field
2052                       : field
2053                       : Default(1)
2054                       : Get('Name' => 'foo') : Set('Name');
2055
2056 If the attributes are on a single line in the source code then they will remain
2057 on a single line if possible.
2058
2059 To prevent this, and thereby always form longer lines, use B<-nboa>.  
2060
2061 =item B<-iob>,  B<--ignore-old-breakpoints>
2062
2063 Use this flag to tell perltidy to ignore existing line breaks to the
2064 maximum extent possible.  This will tend to produce the longest possible
2065 containers, regardless of type, which do not exceed the line length
2066 limit.
2067
2068 =item B<-kis>,  B<--keep-interior-semicolons>
2069
2070 Use the B<-kis> flag to prevent breaking at a semicolon if
2071 there was no break there in the input file.  Normally
2072 perltidy places a newline after each semicolon which
2073 terminates a statement unless several statements are
2074 contained within a one-line brace block.  To illustrate,
2075 consider the following input lines:
2076
2077     dbmclose(%verb_delim); undef %verb_delim;
2078     dbmclose(%expanded); undef %expanded;
2079
2080 The default is to break after each statement, giving
2081
2082     dbmclose(%verb_delim);
2083     undef %verb_delim;
2084     dbmclose(%expanded);
2085     undef %expanded;
2086
2087 With B<perltidy -kis> the multiple statements are retained:
2088
2089     dbmclose(%verb_delim); undef %verb_delim;
2090     dbmclose(%expanded);   undef %expanded;
2091
2092 The statements are still subject to the specified value
2093 of B<maximum-line-length> and will be broken if this 
2094 maximum is exceeed.
2095
2096 =back
2097
2098 =head2 Blank Line Control
2099
2100 Blank lines can improve the readability of a script if they are carefully
2101 placed.  Perltidy has several commands for controlling the insertion,
2102 retention, and removal of blank lines.  
2103
2104 =over 4
2105
2106 =item B<-fbl>,  B<--freeze-blank-lines>
2107
2108 Set B<-fbl> if you want to the blank lines in your script to
2109 remain exactly as they are.  The rest of the parameters in
2110 this section may then be ignored.  (Note: setting the B<-fbl> flag
2111 is equivalent to setting B<-mbl=0> and B<-kbl=2>).
2112
2113 =item B<-bbc>,  B<--blanks-before-comments>
2114
2115 A blank line will be introduced before a full-line comment.  This is the
2116 default.  Use B<-nbbc> or  B<--noblanks-before-comments> to prevent
2117 such blank lines from being introduced.
2118
2119 =item B<-blbs=n>,  B<--blank-lines-before-subs=n>
2120
2121 The parameter B<-blbs=n> requests that least B<n> blank lines precede a sub
2122 definition which does not follow a comment and which is more than one-line
2123 long.  The default is <-blbs=1>.  B<BEGIN> and B<END> blocks are included.
2124
2125 The requested number of blanks statement will be inserted regardless of of the
2126 value of B<--maximum-consecutive-blank-lines=n> (B<-mbl=n>) with the exception
2127 that if B<-mbl=0> then no blanks will be output.
2128
2129 This parameter interacts with the value B<k> of the parameter B<--maximum-consecutive-blank-lines=k> (B<-mbl=k>) as follows:
2130
2131 1. If B<-mbl=0> then no blanks will be output.  This allows all blanks to be suppressed with a single parameter.  Otherwise,
2132
2133 2. If the number of old blank lines in the script is less than B<n> then
2134 additional blanks will be inserted to make the total B<n> regardless of the
2135 value of B<-mbl=k>.  
2136
2137 3. If the number of old blank lines in the script equals or exceeds B<n> then
2138 this parameter has no effect, however the total will not exceed
2139 value specified on the B<-mbl=k> flag.
2140
2141
2142 =item B<-blbp=n>,  B<--blank-lines-before-packages=n>
2143
2144 The parameter B<-blbp=n> requests that least B<n> blank lines precede a package
2145 which does not follow a comment.  The default is <-blbp=1>.  
2146
2147 This parameter interacts with the value B<k> of the parameter
2148 B<--maximum-consecutive-blank-lines=k> (B<-mbl=k>) in the same way as described
2149 for the previous item B<-blbs=n>.
2150
2151
2152 =item B<-bbs>,  B<--blanks-before-subs>
2153
2154 For compatability with previous versions, B<-bbs> or B<--blanks-before-subs> 
2155 is equivalent to F<-blbp=1> and F<-blbs=1>.  
2156
2157 Likewise, B<-nbbs> or B<--noblanks-before-subs> 
2158 is equivalent to F<-blbp=0> and F<-blbs=0>.  
2159
2160 =item B<-bbb>,  B<--blanks-before-blocks>
2161
2162 A blank line will be introduced before blocks of coding delimited by
2163 B<for>, B<foreach>, B<while>, B<until>, and B<if>, B<unless>, in the following
2164 circumstances:
2165
2166 =over 4
2167
2168 =item *
2169
2170 The block is not preceded by a comment.
2171
2172 =item *
2173
2174 The block is not a one-line block.
2175
2176 =item *
2177
2178 The number of consecutive non-blank lines at the current indentation depth is at least B<-lbl>
2179 (see next section).
2180
2181 =back
2182
2183 This is the default.  The intention of this option is to introduce
2184 some space within dense coding.
2185 This is negated with B<-nbbb> or  B<--noblanks-before-blocks>.
2186
2187 =item B<-lbl=n> B<--long-block-line-count=n>
2188
2189 This controls how often perltidy is allowed to add blank lines before 
2190 certain block types (see previous section).  The default is 8.  Entering
2191 a value of B<0> is equivalent to entering a very large number.
2192
2193 =item B<-mbl=n> B<--maximum-consecutive-blank-lines=n>   
2194
2195 This parameter specifies the maximum number of consecutive blank lines which
2196 will be output within code sections of a script.  The default is n=1.  If the
2197 input file has more than n consecutive blank lines, the number will be reduced
2198 to n except as noted above for the B<-blbp> and B<-blbs> parameters.  If B<n=0>
2199 then no blank lines will be output (unless all old blank lines are retained
2200 with the B<-kbl=2> flag of the next section).
2201
2202 This flag obviously does not apply to pod sections,
2203 here-documents, and quotes.  
2204
2205 =item B<-kbl=n>,  B<--keep-old-blank-lines=n>
2206
2207 The B<-kbl=n> flag gives you control over how your existing blank lines are
2208 treated.  
2209
2210 The possible values of B<n> are:
2211
2212  n=0 ignore all old blank lines
2213  n=1 stable: keep old blanks, but limited by the value of the B<-mbl=n> flag
2214  n=2 keep all old blank lines, regardless of the value of the B<-mbl=n> flag
2215
2216 The default is B<n=1>.  
2217
2218 =item B<-sob>,  B<--swallow-optional-blank-lines>
2219
2220 This is equivalent to B<kbl=0> and is included for compatability with
2221 previous versions.
2222
2223 =item B<-nsob>,  B<--noswallow-optional-blank-lines>
2224
2225 This is equivalent to B<kbl=1> and is included for compatability with
2226 previous versions.
2227
2228 =back
2229
2230 =head2 Styles
2231
2232 A style refers to a convenient collection of existing parameters.
2233
2234 =over 4
2235
2236 =item B<-gnu>, B<--gnu-style>
2237
2238 B<-gnu> gives an approximation to the GNU Coding Standards (which do
2239 not apply to perl) as they are sometimes implemented.  At present, this
2240 style overrides the default style with the following parameters:
2241
2242     -lp -bl -noll -pt=2 -bt=2 -sbt=2 -icp
2243
2244 =item B<-pbp>, B<--perl-best-practices>
2245
2246 B<-pbp> is an abbreviation for the parameters in the book B<Perl Best Practices>
2247 by Damian Conway:
2248
2249     -l=78 -i=4 -ci=4 -st -se -vt=2 -cti=0 -pt=1 -bt=1 -sbt=1 -bbt=1 -nsfs -nolq
2250     -wbb="% + - * / x != == >= <= =~ !~ < > | & = 
2251           **= += *= &= <<= &&= -= /= |= >>= ||= //= .= %= ^= x="
2252
2253 Note that the -st and -se flags make perltidy act as a filter on one file only.  
2254 These can be overridden with -nst and -nse if necessary.
2255
2256 =back
2257
2258 =head2 Other Controls
2259
2260 =over 4
2261
2262 =item Deleting selected text 
2263
2264 Perltidy can selectively delete comments and/or pod documentation.  The
2265 command B<-dac> or  B<--delete-all-comments> will delete all comments
2266 B<and> all pod documentation, leaving just code and any leading system
2267 control lines.
2268
2269 The command B<-dp> or B<--delete-pod> will remove all pod documentation
2270 (but not comments).
2271
2272 Two commands which remove comments (but not pod) are: B<-dbc> or
2273 B<--delete-block-comments> and B<-dsc> or  B<--delete-side-comments>.
2274 (Hanging side comments will be deleted with block comments here.)
2275
2276 The negatives of these commands also work, and are the defaults.  When
2277 block comments are deleted, any leading 'hash-bang' will be retained.
2278 Also, if the B<-x> flag is used, any system commands before a leading
2279 hash-bang will be retained (even if they are in the form of comments).
2280
2281 =item Writing selected text to a file
2282
2283 When perltidy writes a formatted text file, it has the ability to also
2284 send selected text to a file with a F<.TEE> extension.  This text can
2285 include comments and pod documentation.  
2286
2287 The command B<-tac> or  B<--tee-all-comments> will write all comments
2288 B<and> all pod documentation.
2289
2290 The command B<-tp> or B<--tee-pod> will write all pod documentation (but
2291 not comments).
2292
2293 The commands which write comments (but not pod) are: B<-tbc> or
2294 B<--tee-block-comments> and B<-tsc> or  B<--tee-side-comments>.
2295 (Hanging side comments will be written with block comments here.)
2296
2297 The negatives of these commands also work, and are the defaults.  
2298
2299 =item Using a F<.perltidyrc> command file
2300
2301 If you use perltidy frequently, you probably won't be happy until you
2302 create a F<.perltidyrc> file to avoid typing commonly-used parameters.
2303 Perltidy will first look in your current directory for a command file
2304 named F<.perltidyrc>.  If it does not find one, it will continue looking
2305 for one in other standard locations.  
2306
2307 These other locations are system-dependent, and may be displayed with
2308 the command C<perltidy -dpro>.  Under Unix systems, it will first look
2309 for an environment variable B<PERLTIDY>.  Then it will look for a
2310 F<.perltidyrc> file in the home directory, and then for a system-wide
2311 file F</usr/local/etc/perltidyrc>, and then it will look for
2312 F</etc/perltidyrc>.  Note that these last two system-wide files do not
2313 have a leading dot.  Further system-dependent information will be found
2314 in the INSTALL file distributed with perltidy.
2315
2316 Under Windows, perltidy will also search for a configuration file named perltidy.ini since Windows does not allow files with a leading period (.).
2317 Use C<perltidy -dpro> to see the possbile locations for your system.
2318 An example might be F<C:\Documents and Settings\All Users\perltidy.ini>.
2319
2320 Another option is the use of the PERLTIDY environment variable.
2321 The method for setting environment variables depends upon the version of
2322 Windows that you are using.  Instructions for Windows 95 and later versions can
2323 be found here:
2324
2325 http://www.netmanage.com/000/20021101_005_tcm21-6336.pdf
2326
2327 Under Windows NT / 2000 / XP the PERLTIDY environment variable can be placed in
2328 either the user section or the system section.  The later makes the
2329 configuration file common to all users on the machine.  Be sure to enter the
2330 full path of the configuration file in the value of the environment variable.
2331 Ex.  PERLTIDY=C:\Documents and Settings\perltidy.ini
2332
2333 The configuation file is free format, and simply a list of parameters, just as
2334 they would be entered on a command line.  Any number of lines may be used, with
2335 any number of parameters per line, although it may be easiest to read with one
2336 parameter per line.  Comment text begins with a #, and there must
2337 also be a space before the # for side comments.  It is a good idea to
2338 put complex parameters in either single or double quotes.
2339
2340 Here is an example of a F<.perltidyrc> file:
2341
2342   # This is a simple of a .perltidyrc configuration file
2343   # This implements a highly spaced style
2344   -se    # errors to standard error output
2345   -w     # show all warnings
2346   -bl    # braces on new lines
2347   -pt=0  # parens not tight at all
2348   -bt=0  # braces not tight
2349   -sbt=0 # square brackets not tight
2350
2351 The parameters in the F<.perltidyrc> file are installed first, so any
2352 parameters given on the command line will have priority over them.  
2353
2354 To avoid confusion, perltidy ignores any command in the .perltidyrc
2355 file which would cause some kind of dump and an exit.  These are:
2356
2357  -h -v -ddf -dln -dop -dsn -dtt -dwls -dwrs -ss
2358
2359 There are several options may be helpful in debugging a F<.perltidyrc>
2360 file:  
2361
2362 =over 4
2363
2364 =item *
2365
2366 A very helpful command is B<--dump-profile> or B<-dpro>.  It writes a
2367 list of all configuration filenames tested to standard output, and 
2368 if a file is found, it dumps the content to standard output before
2369 exiting.  So, to find out where perltidy looks for its configuration
2370 files, and which one if any it selects, just enter 
2371
2372   perltidy -dpro
2373
2374 =item *
2375
2376 It may be simplest to develop and test configuration files with
2377 alternative names, and invoke them with B<-pro=filename> on the command
2378 line.  Then rename the desired file to F<.perltidyrc> when finished.
2379
2380 =item *
2381
2382 The parameters in the F<.perltidyrc> file can be switched off with 
2383 the B<-npro> option.
2384
2385 =item *
2386
2387 The commands B<--dump-options>, B<--dump-defaults>, B<--dump-long-names>,
2388 and B<--dump-short-names>, all described below, may all be helpful.
2389
2390 =back
2391
2392 =item Creating a new abbreviation
2393
2394 A special notation is available for use in a F<.perltidyrc> file
2395 for creating an abbreviation for a group
2396 of options.  This can be used to create a
2397 shorthand for one or more styles which are frequently, but not always,
2398 used.  The notation is to group the options within curly braces which
2399 are preceded by the name of the alias (without leading dashes), like this:
2400
2401         newword {
2402         -opt1
2403         -opt2
2404         }
2405
2406 where B<newword> is the abbreviation, and B<opt1>, etc, are existing parameters
2407 I<or other abbreviations>.  The main syntax requirement is that
2408 the new abbreviation must begin on a new line.
2409 Space before and after the curly braces is optional.
2410 For a
2411 specific example, the following line
2412
2413         airy {-bl -pt=0 -bt=0 -sbt=0}
2414
2415 could be placed in a F<.perltidyrc> file, and then invoked at will with
2416
2417         perltidy -airy somefile.pl
2418
2419 (Either C<-airy> or C<--airy> may be used).
2420
2421 =item Skipping leading non-perl commands with B<-x> or B<--look-for-hash-bang>
2422
2423 If your script has leading lines of system commands or other text which
2424 are not valid perl code, and which are separated from the start of the
2425 perl code by a "hash-bang" line, ( a line of the form C<#!...perl> ),
2426 you must use the B<-x> flag to tell perltidy not to parse and format any
2427 lines before the "hash-bang" line.  This option also invokes perl with a
2428 -x flag when checking the syntax.  This option was originally added to
2429 allow perltidy to parse interactive VMS scripts, but it should be used
2430 for any script which is normally invoked with C<perl -x>.
2431
2432 =item  Making a file unreadable
2433
2434 The goal of perltidy is to improve the readability of files, but there
2435 are two commands which have the opposite effect, B<--mangle> and
2436 B<--extrude>.  They are actually
2437 merely aliases for combinations of other parameters.  Both of these
2438 strip all possible whitespace, but leave comments and pod documents,
2439 so that they are essentially reversible.  The
2440 difference between these is that B<--mangle> puts the fewest possible
2441 line breaks in a script while B<--extrude> puts the maximum possible.
2442 Note that these options do not provided any meaningful obfuscation, because
2443 perltidy can be used to reformat the files.  They were originally
2444 developed to help test the tokenization logic of perltidy, but they
2445 have other uses.
2446 One use for B<--mangle> is the following:
2447
2448   perltidy --mangle myfile.pl -st | perltidy -o myfile.pl.new
2449
2450 This will form the maximum possible number of one-line blocks (see next
2451 section), and can sometimes help clean up a badly formatted script.
2452
2453 A similar technique can be used with B<--extrude> instead of B<--mangle>
2454 to make the minimum number of one-line blocks.
2455
2456 Another use for B<--mangle> is to combine it with B<-dac> to reduce
2457 the file size of a perl script.
2458
2459 =item  One-line blocks 
2460
2461 There are a few points to note regarding one-line blocks.  A one-line
2462 block is something like this,
2463
2464         if ($x > 0) { $y = 1 / $x }  
2465
2466 where the contents within the curly braces is short enough to fit
2467 on a single line.
2468
2469 With few exceptions, perltidy retains existing one-line blocks, if it
2470 is possible within the line-length constraint, but it does not attempt
2471 to form new ones.  In other words, perltidy will try to follow the
2472 one-line block style of the input file.
2473
2474 If an existing one-line block is longer than the maximum line length,
2475 however, it will be broken into multiple lines.  When this happens, perltidy
2476 checks for and adds any optional terminating semicolon (unless the B<-nasc>
2477 option is used) if the block is a code block.  
2478
2479 The main exception is that perltidy will attempt to form new one-line
2480 blocks following the keywords C<map>, C<eval>, and C<sort>, because
2481 these code blocks are often small and most clearly displayed in a single
2482 line.
2483
2484 One-line block rules can conflict with the cuddled-else option.  When
2485 the cuddled-else option is used, perltidy retains existing one-line
2486 blocks, even if they do not obey cuddled-else formatting.
2487
2488 Occasionally, when one-line blocks get broken because they exceed the
2489 available line length, the formatting will violate the requested brace style.
2490 If this happens, reformatting the script a second time should correct
2491 the problem.
2492
2493 =item  Debugging 
2494
2495 The following flags are available for debugging:
2496
2497 B<--dump-defaults> or B<-ddf> will write the default option set to standard output and quit
2498
2499 B<--dump-profile> or B<-dpro>  will write the name of the current 
2500 configuration file and its contents to standard output and quit.
2501
2502 B<--dump-options> or B<-dop>  will write current option set to standard
2503 output and quit.  
2504
2505 B<--dump-long-names> or B<-dln>  will write all command line long names (passed 
2506 to Get_options) to standard output and quit.
2507
2508 B<--dump-short-names>  or B<-dsn> will write all command line short names 
2509 to standard output and quit.
2510
2511 B<--dump-token-types> or B<-dtt>  will write a list of all token types 
2512 to standard output and quit.
2513
2514 B<--dump-want-left-space> or B<-dwls>  will write the hash %want_left_space
2515 to standard output and quit.  See the section on controlling whitespace
2516 around tokens.
2517
2518 B<--dump-want-right-space> or B<-dwrs>  will write the hash %want_right_space
2519 to standard output and quit.  See the section on controlling whitespace
2520 around tokens.
2521
2522 B<-DEBUG>  will write a file with extension F<.DEBUG> for each input file 
2523 showing the tokenization of all lines of code.
2524
2525 =item Working with MakeMaker, AutoLoader and SelfLoader
2526
2527 The first $VERSION line of a file which might be eval'd by MakeMaker
2528 is passed through unchanged except for indentation.  
2529 Use B<--nopass-version-line>, or B<-npvl>, to deactivate this feature.
2530
2531 If the AutoLoader module is used, perltidy will continue formatting
2532 code after seeing an __END__ line.
2533 Use B<--nolook-for-autoloader>, or B<-nlal>, to deactivate this feature.
2534
2535 Likewise, if the SelfLoader module is used, perltidy will continue formatting
2536 code after seeing a __DATA__ line.
2537 Use B<--nolook-for-selfloader>, or B<-nlsl>, to deactivate this feature.
2538
2539 =item Working around problems with older version of Perl 
2540
2541 Perltidy contains a number of rules which help avoid known subtleties
2542 and problems with older versions of perl, and these rules always
2543 take priority over whatever formatting flags have been set.  For example,
2544 perltidy will usually avoid starting a new line with a bareword, because
2545 this might cause problems if C<use strict> is active.
2546
2547 There is no way to override these rules.
2548
2549 =back
2550
2551 =head1 HTML OPTIONS
2552
2553 =over 4
2554
2555 =item  The B<-html> master switch
2556
2557 The flag B<-html> causes perltidy to write an html file with extension
2558 F<.html>.  So, for example, the following command
2559
2560         perltidy -html somefile.pl
2561
2562 will produce a syntax-colored html file named F<somefile.pl.html>
2563 which may be viewed with a browser.
2564
2565 B<Please Note>: In this case, perltidy does not do any formatting to the
2566 input file, and it does not write a formatted file with extension
2567 F<.tdy>.  This means that two perltidy runs are required to create a
2568 fully reformatted, html copy of a script.  
2569
2570 =item  The B<-pre> flag for code snippets
2571
2572 When the B<-pre> flag is given, only the pre-formatted section, within
2573 the <PRE> and </PRE> tags, will be output.  This simplifies inclusion
2574 of the output in other files.  The default is to output a complete
2575 web page.
2576
2577 =item  The B<-nnn> flag for line numbering
2578
2579 When the B<-nnn> flag is given, the output lines will be numbered.
2580
2581 =item  The B<-toc>, or B<--html-table-of-contents> flag
2582
2583 By default, a table of contents to packages and subroutines will be
2584 written at the start of html output.  Use B<-ntoc> to prevent this.
2585 This might be useful, for example, for a pod document which contains a
2586 number of unrelated code snippets.  This flag only influences the code
2587 table of contents; it has no effect on any table of contents produced by
2588 pod2html (see next item).
2589
2590 =item  The B<-pod>, or B<--pod2html> flag
2591
2592 There are two options for formatting pod documentation.  The default is
2593 to pass the pod through the Pod::Html module (which forms the basis of
2594 the pod2html utility).  Any code sections are formatted by perltidy, and
2595 the results then merged.  Note: perltidy creates a temporary file when
2596 Pod::Html is used; see L<"FILES">.  Also, Pod::Html creates temporary
2597 files for its cache.
2598
2599 NOTE: Perltidy counts the number of C<=cut> lines, and either moves the
2600 pod text to the top of the html file if there is one C<=cut>, or leaves
2601 the pod text in its original order (interleaved with code) otherwise.
2602
2603 Most of the flags accepted by pod2html may be included in the perltidy
2604 command line, and they will be passed to pod2html.  In some cases,
2605 the flags have a prefix C<pod> to emphasize that they are for the
2606 pod2html, and this prefix will be removed before they are passed to
2607 pod2html.  The flags which have the additional C<pod> prefix are:
2608
2609    --[no]podheader --[no]podindex --[no]podrecurse --[no]podquiet 
2610    --[no]podverbose --podflush
2611
2612 The flags which are unchanged from their use in pod2html are:
2613
2614    --backlink=s --cachedir=s --htmlroot=s --libpods=s --title=s
2615    --podpath=s --podroot=s 
2616
2617 where 's' is an appropriate character string.  Not all of these flags are
2618 available in older versions of Pod::Html.  See your Pod::Html documentation for
2619 more information.
2620
2621 The alternative, indicated with B<-npod>, is not to use Pod::Html, but
2622 rather to format pod text in italics (or whatever the stylesheet
2623 indicates), without special html markup.  This is useful, for example,
2624 if pod is being used as an alternative way to write comments.
2625
2626 =item  The B<-frm>, or B<--frames> flag
2627
2628 By default, a single html output file is produced.  This can be changed
2629 with the B<-frm> option, which creates a frame holding a table of
2630 contents in the left panel and the source code in the right side. This
2631 simplifies code browsing.  Assume, for example, that the input file is
2632 F<MyModule.pm>.  Then, for default file extension choices, these three
2633 files will be created:
2634
2635  MyModule.pm.html      - the frame
2636  MyModule.pm.toc.html  - the table of contents
2637  MyModule.pm.src.html  - the formatted source code
2638
2639 Obviously this file naming scheme requires that output be directed to a real
2640 file (as opposed to, say, standard output).  If this is not the
2641 case, or if the file extension is unknown, the B<-frm> option will be
2642 ignored.
2643
2644 =item  The B<-text=s>, or B<--html-toc-extension> flag
2645
2646 Use this flag to specify the extra file extension of the table of contents file
2647 when html frames are used.  The default is "toc".
2648 See L<Specifying File Extensions>.
2649
2650 =item  The B<-sext=s>, or B<--html-src-extension> flag
2651
2652 Use this flag to specify the extra file extension of the content file when html
2653 frames are used.  The default is "src".
2654 See L<Specifying File Extensions>.
2655
2656 =item  The B<-hent>, or B<--html-entities> flag
2657
2658 This flag controls the use of Html::Entities for html formatting.  By
2659 default, the module Html::Entities is used to encode special symbols.
2660 This may not be the right thing for some browser/language
2661 combinations.  Use --nohtml-entities or -nhent to prevent this.
2662
2663 =item  Style Sheets
2664
2665 Style sheets make it very convenient to control and adjust the
2666 appearance of html pages.  The default behavior is to write a page of
2667 html with an embedded style sheet.
2668
2669 An alternative to an embedded style sheet is to create a page with a
2670 link to an external style sheet.  This is indicated with the
2671 B<-css=filename>,  where the external style sheet is F<filename>.  The
2672 external style sheet F<filename> will be created if and only if it does
2673 not exist.  This option is useful for controlling multiple pages from a
2674 single style sheet.
2675
2676 To cause perltidy to write a style sheet to standard output and exit,
2677 use the B<-ss>, or B<--stylesheet>, flag.  This is useful if the style
2678 sheet could not be written for some reason, such as if the B<-pre> flag
2679 was used.  Thus, for example,
2680   
2681   perltidy -html -ss >mystyle.css
2682
2683 will write a style sheet with the default properties to file
2684 F<mystyle.css>.
2685
2686 The use of style sheets is encouraged, but a web page without a style
2687 sheets can be created with the flag B<-nss>.  Use this option if you
2688 must to be sure that older browsers (roughly speaking, versions prior to
2689 4.0 of Netscape Navigator and Internet Explorer) can display the
2690 syntax-coloring of the html files.
2691
2692 =item  Controlling HTML properties
2693
2694 Note: It is usually more convenient to accept the default properties
2695 and then edit the stylesheet which is produced.  However, this section
2696 shows how to control the properties with flags to perltidy.
2697
2698 Syntax colors may be changed from their default values by flags of the either
2699 the long form, B<-html-color-xxxxxx=n>, or more conveniently the short form,
2700 B<-hcx=n>, where B<xxxxxx> is one of the following words, and B<x> is the
2701 corresponding abbreviation:
2702
2703       Token Type             xxxxxx           x 
2704       ----------             --------         --
2705       comment                comment          c
2706       number                 numeric          n
2707       identifier             identifier       i
2708       bareword, function     bareword         w
2709       keyword                keyword          k
2710       quite, pattern         quote            q
2711       here doc text          here-doc-text    h
2712       here doc target        here-doc-target  hh
2713       punctuation            punctuation      pu
2714       parentheses            paren            p
2715       structural braces      structure        s
2716       semicolon              semicolon        sc
2717       colon                  colon            co
2718       comma                  comma            cm
2719       label                  label            j
2720       sub definition name    subroutine       m
2721       pod text               pod-text         pd
2722
2723 A default set of colors has been defined, but they may be changed by providing
2724 values to any of the following parameters, where B<n> is either a 6 digit 
2725 hex RGB color value or an ascii name for a color, such as 'red'.
2726
2727 To illustrate, the following command will produce an html 
2728 file F<somefile.pl.html> with "aqua" keywords:
2729
2730         perltidy -html -hck=00ffff somefile.pl
2731
2732 and this should be equivalent for most browsers:
2733
2734         perltidy -html -hck=aqua somefile.pl
2735
2736 Perltidy merely writes any non-hex names that it sees in the html file.
2737 The following 16 color names are defined in the HTML 3.2 standard:
2738
2739         black   => 000000,
2740         silver  => c0c0c0,
2741         gray    => 808080,
2742         white   => ffffff,
2743         maroon  => 800000,
2744         red     => ff0000,
2745         purple  => 800080,
2746         fuchsia => ff00ff,
2747         green   => 008000,
2748         lime    => 00ff00,
2749         olive   => 808000,
2750         yellow  => ffff00
2751         navy    => 000080,
2752         blue    => 0000ff,
2753         teal    => 008080,
2754         aqua    => 00ffff,
2755
2756 Many more names are supported in specific browsers, but it is safest
2757 to use the hex codes for other colors.  Helpful color tables can be
2758 located with an internet search for "HTML color tables". 
2759
2760 Besides color, two other character attributes may be set: bold, and italics.
2761 To set a token type to use bold, use the flag
2762 B<--html-bold-xxxxxx> or B<-hbx>, where B<xxxxxx> or B<x> are the long
2763 or short names from the above table.  Conversely, to set a token type to 
2764 NOT use bold, use B<--nohtml-bold-xxxxxx> or B<-nhbx>.
2765
2766 Likewise, to set a token type to use an italic font, use the flag
2767 B<--html-italic-xxxxxx> or B<-hix>, where again B<xxxxxx> or B<x> are the
2768 long or short names from the above table.  And to set a token type to
2769 NOT use italics, use B<--nohtml-italic-xxxxxx> or B<-nhix>.
2770
2771 For example, to use bold braces and lime color, non-bold, italics keywords the
2772 following command would be used:
2773
2774         perltidy -html -hbs -hck=00FF00 -nhbk -hik somefile.pl
2775
2776 The background color can be specified with B<--html-color-background=n>,
2777 or B<-hcbg=n> for short, where n is a 6 character hex RGB value.  The
2778 default color of text is the value given to B<punctuation>, which is
2779 black as a default.
2780
2781 Here are some notes and hints:
2782
2783 1. If you find a preferred set of these parameters, you may want
2784 to create a F<.perltidyrc> file containing them.  See the perltidy man
2785 page for an explanation.
2786
2787 2. Rather than specifying values for these parameters, it is probably
2788 easier to accept the defaults and then edit a style sheet.  The style
2789 sheet contains comments which should make this easy.
2790
2791 3. The syntax-colored html files can be very large, so it may be best to
2792 split large files into smaller pieces to improve download times.
2793
2794 =back
2795
2796 =head1 SOME COMMON INPUT CONVENTIONS
2797
2798 =head2 Specifying Block Types
2799
2800 Several parameters which refer to code block types may be customized by also
2801 specifying an associated list of block types.  The type of a block is the name
2802 of the keyword which introduces that block, such as B<if>, B<else>, or B<sub>.
2803 An exception is a labeled block, which has no keyword, and should be specified
2804 with just a colon.
2805
2806 For example, the following parameter specifies C<sub>, labels, C<BEGIN>, and
2807 C<END> blocks:
2808
2809    -cscl="sub : BEGIN END"
2810
2811 (the meaning of the -cscl parameter is described above.)  Note that
2812 quotes are required around the list of block types because of the
2813 spaces.
2814
2815 =head2 Specifying File Extensions
2816
2817 Several parameters allow default file extensions to be overridden.  For
2818 example, a backup file extension may be specified with B<-bext=ext>,
2819 where B<ext> is some new extension.  In order to provides the user some
2820 flexibility, the following convention is used in all cases to decide if
2821 a leading '.' should be used.  If the extension C<ext> begins with
2822 C<A-Z>, C<a-z>, or C<0-9>, then it will be appended to the filename with
2823 an intermediate '.' (or perhaps an '_' on VMS systems).  Otherwise, it
2824 will be appended directly.  
2825
2826 For example, suppose the file is F<somefile.pl>.  For C<-bext=old>, a '.' is
2827 added to give F<somefile.pl.old>.  For C<-bext=.old>, no additional '.' is
2828 added, so again the backup file is F<somefile.pl.old>.  For C<-bext=~>, then no
2829 dot is added, and the backup file will be F<somefile.pl~>  .  
2830
2831 =head1 SWITCHES WHICH MAY BE NEGATED
2832
2833 The following list shows all short parameter names which allow a prefix
2834 'n' to produce the negated form:
2835
2836  D    anl asc  aws  b    bbb bbc bbs  bl   bli  boc bok  bol  bot  ce
2837  csc  dac dbc  dcsc ddf  dln dnl dop  dp   dpro dsc dsm  dsn  dtt  dwls
2838  dwrs dws f    fll  frm  fs  hsc html ibc  icb  icp iob  isbc lal  log
2839  lp   lsl ohbr okw  ola  oll opr opt  osbr otr  ple ple  pod  pvl  q
2840  sbc  sbl schb scp  scsb sct se  sfp  sfs  skp  sob sohb sop  sosb sot
2841  ssc  st  sts  syn  t    tac tbc toc  tp   tqw  tsc w    x    bar  kis
2842
2843 Equivalently, the prefix 'no' or 'no-' on the corresponding long names may be
2844 used.
2845
2846 =head1 LIMITATIONS
2847
2848 =over 4
2849
2850 =item  Parsing Limitations
2851
2852 Perltidy should work properly on most perl scripts.  It does a lot of
2853 self-checking, but still, it is possible that an error could be
2854 introduced and go undetected.  Therefore, it is essential to make
2855 careful backups and to test reformatted scripts.
2856
2857 The main current limitation is that perltidy does not scan modules
2858 included with 'use' statements.  This makes it necessary to guess the
2859 context of any bare words introduced by such modules.  Perltidy has good
2860 guessing algorithms, but they are not infallible.  When it must guess,
2861 it leaves a message in the log file.
2862
2863 If you encounter a bug, please report it.
2864
2865 =item  What perltidy does not parse and format
2866
2867 Perltidy indents but does not reformat comments and C<qw> quotes. 
2868 Perltidy does not in any way modify the contents of here documents or
2869 quoted text, even if they contain source code.  (You could, however,
2870 reformat them separately).  Perltidy does not format 'format' sections
2871 in any way.  And, of course, it does not modify pod documents.
2872
2873 =back
2874
2875 =head1 FILES
2876
2877 =over 4
2878
2879 =item Temporary files
2880
2881 Under the -html option with the default --pod2html flag, a temporary file is
2882 required to pass text to Pod::Html.  Unix systems will try to use the POSIX
2883 tmpnam() function.  Otherwise the file F<perltidy.TMP> will be temporarily
2884 created in the current working directory.
2885
2886 =item Special files when standard input is used
2887
2888 When standard input is used, the log file, if saved, is F<perltidy.LOG>,
2889 and any errors are written to F<perltidy.ERR> unless the B<-se> flag is
2890 set.  These are saved in the current working directory.  
2891
2892 =item Files overwritten
2893
2894 The following file extensions are used by perltidy, and files with these
2895 extensions may be overwritten or deleted: F<.ERR>, F<.LOG>, F<.TEE>,
2896 and/or F<.tdy>, F<.html>, and F<.bak>, depending on the run type and
2897 settings.
2898
2899 =item  Files extensions limitations
2900
2901 Perltidy does not operate on files for which the run could produce a file with
2902 a duplicated file extension.  These extensions include F<.LOG>, F<.ERR>,
2903 F<.TEE>, and perhaps F<.tdy> and F<.bak>, depending on the run type.  The
2904 purpose of this rule is to prevent generating confusing filenames such as
2905 F<somefile.tdy.tdy.tdy>.
2906
2907 =back
2908
2909 =head1 SEE ALSO
2910
2911 perlstyle(1), Perl::Tidy(3)
2912
2913 =head1 VERSION
2914
2915 This man page documents perltidy version 20120701.
2916
2917 =head1 CREDITS
2918
2919 Michael Cartmell supplied code for adaptation to VMS and helped with
2920 v-strings.
2921
2922 Yves Orton supplied code for adaptation to the various versions
2923 of Windows. 
2924
2925 Axel Rose supplied a patch for MacPerl.
2926
2927 Hugh S. Myers designed and implemented the initial Perl::Tidy module interface. 
2928
2929 Many others have supplied key ideas, suggestions, and bug reports;
2930 see the CHANGES file.
2931
2932 =head1 AUTHOR
2933
2934   Steve Hancock
2935   email: perltidy at users.sourceforge.net
2936   http://perltidy.sourceforge.net
2937
2938 =head1 COPYRIGHT
2939
2940 Copyright (c) 2000-2010 by Steve Hancock
2941
2942 =head1 LICENSE
2943
2944 This package is free software; you can redistribute it and/or modify it
2945 under the terms of the "GNU General Public License".
2946
2947 Please refer to the file "COPYING" for details.
2948
2949 =head1 DISCLAIMER
2950
2951 This package is distributed in the hope that it will be useful,
2952 but WITHOUT ANY WARRANTY; without even the implied warranty of
2953 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2954
2955 See the "GNU General Public License" for more details.