diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perlrun.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perlrun.pod | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perlrun.pod b/Master/tlpkg/tlperl/lib/pods/perlrun.pod index d51342f8f80..6ddc608d4f4 100644 --- a/Master/tlpkg/tlperl/lib/pods/perlrun.pod +++ b/Master/tlpkg/tlperl/lib/pods/perlrun.pod @@ -93,11 +93,12 @@ getting whatever version is first in the user's path. If you want a specific version of Perl, say, perl5.005_57, you should place that directly in the C<#!> line's path. -If the C<#!> line does not contain the word "perl", the program named after -the C<#!> is executed instead of the Perl interpreter. This is slightly -bizarre, but it helps people on machines that don't do C<#!>, because they -can tell a program that their SHELL is F</usr/bin/perl>, and Perl will then -dispatch the program to the correct interpreter for them. +If the C<#!> line does not contain the word "perl" nor the word "indir" +the program named after the C<#!> is executed instead of the Perl +interpreter. This is slightly bizarre, but it helps people on machines +that don't do C<#!>, because they can tell a program that their SHELL is +F</usr/bin/perl>, and Perl will then dispatch the program to the correct +interpreter for them. After locating your program, Perl compiles the entire program to an internal form. If there are any compilation errors, execution of the @@ -143,8 +144,8 @@ Perl program and a Perl library file. Put - $ perl -mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' ! - $ exit++ + ++$status != 0 and $exit = $status = undef; + $ perl -mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' ! + $ exit++ + ++$status != 0 and $exit = $status = undef; at the top of your program, where B<-mysw> are any command line switches you want to pass to Perl. You can now invoke the program directly, by saying @@ -160,7 +161,7 @@ Command-interpreters on non-Unix systems have rather different ideas on quoting than Unix shells. You'll need to learn the special characters in your command-interpreter (C<*>, C<\> and C<"> are common) and how to protect whitespace and these characters to run -one-liners (see B<-e> below). +one-liners (see L<-e|/-e commandline> below). On some systems, you may have to change single-quotes to double ones, which you must I<not> do on Unix or Plan 9 systems. You might also @@ -282,13 +283,13 @@ are as follows; listing the letters is equal to summing the numbers. D 24 i + o A 32 the @ARGV elements are expected to be strings encoded in UTF-8 - L 64 normally the "IOEioA" are unconditional, - the L makes them conditional on the locale environment - variables (the LC_ALL, LC_TYPE, and LANG, in the order - of decreasing precedence) -- if the variables indicate + L 64 normally the "IOEioA" are unconditional, the L makes + them conditional on the locale environment variables + (the LC_ALL, LC_TYPE, and LANG, in the order of + decreasing precedence) -- if the variables indicate UTF-8, then the selected "IOEioA" are in effect - a 256 Set ${^UTF8CACHE} to -1, to run the UTF-8 caching code in - debugging mode. + a 256 Set ${^UTF8CACHE} to -1, to run the UTF-8 caching + code in debugging mode. =for documenting_the_underdocumented perl.h gives W/128 as PERL_UNICODE_WIDESYSCALLS "/* for Sarathy */" @@ -314,6 +315,7 @@ same effect as B<-CSDL>. In other words, the standard I/O handles and the default C<open()> layer are UTF-8-fied I<but> only if the locale environment variables indicate a UTF-8 locale. This behaviour follows the I<implicit> (and problematic) UTF-8 behaviour of Perl 5.8.0. +(See L<perl581delta/UTF-8 no longer default under UTF-8 locales>.) You can use B<-C0> (or C<"0"> for C<PERL_UNICODE>) to explicitly disable all the above Unicode features. @@ -393,19 +395,24 @@ B<-D14> is equivalent to B<-Dtls>): 512 r Regular expression parsing and execution 1024 x Syntax tree dump 2048 u Tainting checks - 4096 U Unofficial, User hacking (reserved for private, unreleased use) + 4096 U Unofficial, User hacking (reserved for private, + unreleased use) 8192 H Hash dump -- usurps values() 16384 X Scratchpad allocation 32768 D Cleaning up 131072 T Tokenizing - 262144 R Include reference counts of dumped variables (eg when using -Ds) - 524288 J show s,t,P-debug (don't Jump over) on opcodes within package DB + 262144 R Include reference counts of dumped variables (eg when + using -Ds) + 524288 J show s,t,P-debug (don't Jump over) on opcodes within + package DB 1048576 v Verbose: use in conjunction with other flags 2097152 C Copy On Write 4194304 A Consistency checks on internal structures - 8388608 q quiet - currently only suppresses the "EXECUTING" message + 8388608 q quiet - currently only suppresses the "EXECUTING" + message 16777216 M trace smart match resolution - 33554432 B dump suBroutine definitions, including special Blocks like BEGIN + 33554432 B dump suBroutine definitions, including special Blocks + like BEGIN All these flags require B<-DDEBUGGING> when you compile the Perl executable (but see C<:opd> in L<Devel::Peek> or L<re/'debug' mode> @@ -512,20 +519,22 @@ as: This allows you to add a prefix to the backup file, instead of (or in addition to) a suffix: - $ perl -pi'orig_*' -e 's/bar/baz/' fileA # backup to 'orig_fileA' + $ perl -pi'orig_*' -e 's/bar/baz/' fileA # backup to + # 'orig_fileA' Or even to place backup copies of the original files into another directory (provided the directory already exists): - $ perl -pi'old/*.orig' -e 's/bar/baz/' fileA # backup to 'old/fileA.orig' + $ perl -pi'old/*.orig' -e 's/bar/baz/' fileA # backup to + # 'old/fileA.orig' These sets of one-liners are equivalent: - $ perl -pi -e 's/bar/baz/' fileA # overwrite current file - $ perl -pi'*' -e 's/bar/baz/' fileA # overwrite current file + $ perl -pi -e 's/bar/baz/' fileA # overwrite current file + $ perl -pi'*' -e 's/bar/baz/' fileA # overwrite current file - $ perl -pi'.orig' -e 's/bar/baz/' fileA # backup to 'fileA.orig' - $ perl -pi'*.orig' -e 's/bar/baz/' fileA # backup to 'fileA.orig' + $ perl -pi'.orig' -e 's/bar/baz/' fileA # backup to 'fileA.orig' + $ perl -pi'*.orig' -e 's/bar/baz/' fileA # backup to 'fileA.orig' From the shell, saying @@ -669,7 +678,7 @@ I<awk>: ... # your program goes here } -Note that the lines are not printed by default. See B<-p> to have +Note that the lines are not printed by default. See L</-p> to have lines printed. If a file named by an argument cannot be opened for some reason, Perl warns you about it and moves on to the next file. |