-T File is an ASCII text file (heuristic guess).
-B File is a "binary" file (opposite of -T).
- -M Age of file in days when script started.
+ -M Script start time minus file modification time, in days.
-A Same for access time.
- -C Same for inode change time.
+ -C Same for inode change time (Unix, may differ for other platforms)
Example:
C<< <> >> operator. Since C<< <> >> isn't explicitly opened,
as a normal filehandle is, an C<eof()> before C<< <> >> has been
used will cause C<@ARGV> to be examined to determine if input is
-available.
+available. Similarly, an C<eof()> after C<< <> >> has returned
+end-of-file will assume you are processing another C<@ARGV> list,
+and if you haven't set C<@ARGV>, will read input from C<STDIN>;
+see L<perlop/"I/O Operators">.
In a C<< while (<>) >> loop, C<eof> or C<eof(ARGV)> can be used to
detect the end of each file, C<eof()> will only detect the end of the
integer values _and_ if Perl has been compiled to support those.
Causes a fatal error otherwise.)
+ j A signed integer value (a Perl internal integer, IV).
+ J An unsigned integer value (a Perl internal unsigned integer, UV).
+
f A single-precision float in the native format.
d A double-precision float in the native format.
+ F A floating point value in the native native format
+ (a Perl internal floating point value, NV).
+ D A long double-precision float in the native format.
+ (Long doubles are available only if your system supports long
+ double values _and_ if Perl has been compiled to support those.
+ Causes a fatal error otherwise.)
+
p A pointer to a null-terminated string.
P A pointer to a structure (fixed-length string).
the packed structure contains a byte count followed by the string itself.
You write I<length-item>C</>I<string-item>.
-The I<length-item> can be any C<pack> template letter,
-and describes how the length value is packed.
-The ones likely to be of most use are integer-packing ones like
-C<n> (for Java strings), C<w> (for ASN.1 or SNMP)
-and C<N> (for Sun XDR).
+The I<length-item> can be any C<pack> template letter, and describes
+how the length value is packed. The ones likely to be of most use are
+integer-packing ones like C<n> (for Java strings), C<w> (for ASN.1 or
+SNMP) and C<N> (for Sun XDR).
The I<string-item> must, at present, be C<"A*">, C<"a*"> or C<"Z*">.
For C<unpack> the length of the string is obtained from the I<length-item>,
=item *
-The integer formats C<s>, C<S>, C<i>, C<I>, C<l>, and C<L>
+The integer formats C<s>, C<S>, C<i>, C<I>, C<l>, C<L>, C<j>, and C<J>
are inherently non-portable between processors and operating systems
because they obey the native byteorder and endianness. For example a
4-byte integer 0x12345678 (305419896 decimal) would be ordered natively
unpack() C's C<struct {char c; double d; char cc[2]}> one may need to
use the template C<C x![d] d C[2]>; this assumes that doubles must be
aligned on the double's size.
-
+
For alignment commands C<count> of 0 is equivalent to C<count> of 1;
both result in no-ops.
-
+
=item *
A comment in a TEMPLATE starts with C<#> and goes to the end of line.
If OFFSET is negative then it starts that far from the end of the array.
If LENGTH is omitted, removes everything from OFFSET onward.
If LENGTH is negative, leaves that many elements off the end of the array.
-If both OFFSET and LENGTH are omitted, removes everything.
+If both OFFSET and LENGTH are omitted, removes everything. If OFFSET is
+past the end of the array, perl issues a warning, and splices at the
+end of the array.
The following equivalences hold (assuming C<$[ == 0>):