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