this means you can no longer tell the difference between an executable
Perl program and a Perl library file.
-=item Macintosh
-
-Under "Classic" MacOS, a perl program will have the appropriate Creator and
-Type, so that double-clicking them will invoke the MacPerl application.
-Under Mac OS X, clickable apps can be made from any C<#!> script using Wil
-Sanchez' DropScript utility: http://www.wsanchez.net/software/ .
-
=item VMS
Put
# MS-DOS, etc.
perl -e "print \"Hello world\n\""
- # Macintosh
- print "Hello world\n"
- (then Run "Myscript" or Shift-Command-R)
-
# VMS
perl -e "print ""Hello world\n"""
when nobody was looking, but just try to find documentation for its
quoting rules.
-Under the Macintosh, it depends which environment you are using. The MacPerl
-shell, or MPW, is much like Unix shells in its support for several
-quoting variants, except that it makes free use of the Macintosh's non-ASCII
-characters as control characters.
-
There is no general solution to all of this. It's just a mess.
=head2 Location of Perl
disable all the above Unicode features.
The read-only magic variable C<${^UNICODE}> reflects the numeric value
-of this setting. This is variable is set during Perl startup and is
+of this setting. This variable is set during Perl startup and is
thereafter read-only. If you want runtime effects, use the three-arg
open() (see L<perlfunc/open>), the two-arg binmode() (see L<perlfunc/binmode>),
and the C<open> pragma (see L<open>).
4194304 A Consistency checks on internal structures
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
All these flags require B<-DDEBUGGING> when you compile the Perl
executable (but see L<Devel::Peek>, L<re> which may change this).
optional features (in the main compilation unit). See L<feature>.
=item B<-f>
-X<-f>
+X<-f> X<sitecustomize> X<sitecustomize.pl>
Disable executing F<$Config{sitelib}/sitecustomize.pl> at startup.
It can for instance be used to add entries to the @INC array to make perl
find modules in non-standard locations.
+Perl actually inserts the following code:
+
+ BEGIN {
+ do { local $!; -f "$Config{sitelib}/sitecustomize.pl"; }
+ && do "$Config{sitelib}/sitecustomize.pl";
+ }
+
+Since it is an actual C<do> (not a C<require>), F<sitecustomize.pl>
+doesn't need to return a true value. The code is run in package C<main>,
+in its own lexical scope. However, if the script dies, C<$@> will not
+be set.
+
+The value of C<$Config{sitelib}> is also determined in C code and not
+read from C<Config.pm>, which is not loaded.
+
+The code is executed B<very> early. For example, any changes made to
+C<@INC> will show up in the output of `perl -V`. Of course, C<END>
+blocks will be likewise executed very late.
+
+To determine at runtime if this capability has been compiled in your
+perl, you can check the value of C<$Config{usesitecustomize}>.
+
=item B<-F>I<pattern>
X<-F>
$ perl -pi~ -e 's/foo/bar/' file1 file2 file3...
Note that because B<-i> renames or deletes the original file before
-creating a new file of the same name, UNIX-style soft and hard links will
+creating a new file of the same name, Unix-style soft and hard links will
not be preserved.
Finally, the B<-i> switch does not impede execution when no
being done at interpreter startup time.)
If PERL5LIB is not defined, PERLLIB is used. Directories are separated
-(like in PATH) by a colon on unixish platforms and by a semicolon on
+(like in PATH) by a colon on Unixish platforms and by a semicolon on
Windows (the proper path separator being given by the command C<perl
-V:path_sep>).
environment variable) treats the colon as a separator.
An unset or empty PERLIO is equivalent to the default set of layers for
-your platform, for example C<:unix:perlio> on UNIX-like systems
+your platform, for example C<:unix:perlio> on Unix-like systems
and C<:unix:crlf> on Windows and other DOS-like systems.
The list becomes the default for I<all> perl's IO. Consequently only built-in
On all platforms the default set of layers should give acceptable results.
-For UNIX platforms that will equivalent of "unix perlio" or "stdio".
+For Unix platforms that will equivalent of "unix perlio" or "stdio".
Configure is setup to prefer "stdio" implementation if system's library
provides for fast access to the buffer, otherwise it uses the "unix perlio"
implementation.
If set to the name of a file or device then certain operations of PerlIO
sub-system will be logged to that file (opened as append). Typical uses
-are UNIX:
+are Unix:
PERLIO_DEBUG=/dev/tty perl script ...
B<Do not disclose the hash seed> to people who don't need to know it.
See also hash_seed() of L<Hash::Util>.
+=item PERL_MEM_LOG
+X<PERL_MEM_LOG>
+
+If your perl was configured with C<-Accflags=-DPERL_MEM_LOG>, setting the
+environment variable C<PERL_MEMLOG> enables logging debug messages. The
+value has the form C<< <number>[m][s][t] >>, where C<number> is the
+filedescriptor number you want to write to, and the combination of letters
+specifies that you want information about (m)emory and/or (s)v, optionally
+with (t)imestamps. For example C<PERL_MEMLOG=1mst> will log all
+information to stdout. You can write to other opened filedescriptors too,
+in a variety of ways;
+
+ bash$ 3>foo3 PERL_MEM_LOG=3m perl ...
+
=item PERL_ROOT (specific to the VMS port)
X<PERL_ROOT>
X<PERL_UNICODE>
Equivalent to the B<-C> command-line switch. Note that this is not
-a boolean variable-- setting this to C<"1"> is not the right way to
+a boolean variable. Setting this to C<"1"> is not the right way to
"enable Unicode" (whatever that would mean). You can use C<"0"> to
"disable Unicode", though (or alternatively unset PERL_UNICODE in
your shell before starting Perl). See the description of the C<-C>