The examples above use a relative path to the perl interpreter,
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
+a specific version of Perl, say, perl5.14.1, 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
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
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
will stand in for whatever method works on your system. You are
advised to use a specific path if you care about a specific version.
- #!/usr/local/bin/perl5.00554
+ #!/usr/local/bin/perl5.14
or if you just want to be running at least version, place a statement
like this at the top of your program:
- use 5.005_54;
+ use 5.014;
=head2 Command Switches
X<perl, command switches> X<command switches>
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 */"
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
+ 65536 S Op slab allocation
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>
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
... # 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.
switches are allowed. When running taint checks (either because the
program was running setuid or setgid, or because the B<-T> or B<-t>
switch was used), this variable is ignored. If PERL5OPT begins with
-B<- T>, tainting will be enabled and subsequent options ignored. If
+B<-T>, tainting will be enabled and subsequent options ignored. If
PERL5OPT begins with B<-t>, tainting will be enabled, a writable dot
removed from @INC, and subsequent options honored.
It is conventional to start layer names with a colon (for example, C<:perlio>) to
emphasize their similarity to variable "attributes". But the code that parses
-layer specification strings, which is also used to decode the PERLIO
+layer specification strings, which is also used to decode the PERLIO
environment variable, treats the colon as a separator.
An unset or empty PERLIO is equivalent to the default set of layers for
The list becomes the default for I<all> Perl's IO. Consequently only built-in
layers can appear in this list, as external layers (such as C<:encoding()>) need
-IO in order to load them!. See L<"open pragma"|open> for how to add external
+IO in order to load them! See L<"open pragma"|open> for how to add external
encodings as defaults.
Layers it makes sense to include in the PERLIO environment
X<PERLIO_DEBUG>
If set to the name of a file or device, certain operations of PerlIO
-subsystem will be logged to that file, which is opened in append mode
+subsystem will be logged to that file, which is opened in append mode.
Typical uses are in Unix:
% env PERLIO_DEBUG=/dev/tty perl script ...