X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfunc.pod;h=d07ded38293683fb30852b57c75b7145e3b8c015;hb=e0478e5a74c23ab803d1f4136ac0e84a68ba9ecf;hp=004c0f47cc972b5448b228fb4a1a6d73d44efd5b;hpb=4438c4b75b842b6c829a7da9841e97abb875b1d8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 004c0f4..d07ded3 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -1412,6 +1412,9 @@ This surprising autovivification in what does not at first--or even second--glance appear to be an lvalue context may be fixed in a future release. +See L for specifics on how exists() acts when +used on a pseudo-hash. + =item exit EXPR Evaluates EXPR and exits immediately with that value. Example: @@ -2064,7 +2067,8 @@ separated by the value of EXPR, and returns that new string. Example: $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell); -See L. +Beware that unlike C, C doesn't take a pattern as its +first argument. Compare L. =item keys HASH @@ -2148,6 +2152,10 @@ C cannot be used to exit a block which returns a value such as C, C or C, and should not be used to exit a grep() or map() operation. +Note that a block by itself is semantically identical to a loop +that executes once. Thus C can be used to effect an early +exit out of such a block. + See also L for an illustration of how C, C, and C work. @@ -2366,6 +2374,8 @@ there is an error. See also C and C documentation. =item my EXPR +=item my EXPR : ATTRIBUTES + A C declares the listed variables to be local (lexically) to the enclosing block, file, or C. If more than one value is listed, the list must be placed in parentheses. See @@ -2391,6 +2401,9 @@ C cannot be used to exit a block which returns a value such as C, C or C, and should not be used to exit a grep() or map() operation. +Note that a block by itself is semantically identical to a loop +that executes once. Thus C will exit such a block early. + See also L for an illustration of how C, C, and C work. @@ -2697,6 +2710,18 @@ Returns the numeric (ASCII or Unicode) value of the first character of EXPR. If EXPR is omitted, uses C<$_>. For the reverse, see L. See L for more about Unicode. +=item our EXPR + +An C declares the listed variables to be valid globals within +the enclosing block, file, or C. That is, it has the same +scoping rules as a "my" declaration, but does not create a local +variable. If more than one value is listed, the list must be placed +in parentheses. The C declaration has no semantic effect unless +"use strict vars" is in effect, in which case it lets you use the +declared global variable without qualifying it with a package name. +(But only within the lexical scope of the C declaration. In this +it differs from "use vars", which is package scoped.) + =item pack TEMPLATE,LIST Takes a list of values and packs it into a binary structure, @@ -2806,9 +2831,9 @@ C<"P"> is C. =item * -The C<"#"> character allows packing and unpacking of strings where the +The C<"/"> character allows packing and unpacking of strings where the packed structure contains a byte count followed by the string itself. -You write IC<#>I. +You write ICI. The I can be any C template letter, and describes how the length value is packed. @@ -2820,9 +2845,9 @@ The I must, at present, be C<"A*">, C<"a*"> or C<"Z*">. For C the length of the string is obtained from the I, but if you put in the '*' it will be ignored. - unpack 'C#a', "\04Gurusamy"; gives 'Guru' - unpack 'a3#A* A*', '007 Bond J '; gives (' Bond','J') - pack 'n#a* w#a*','hello,','world'; gives "\000\006hello,\005world" + unpack 'C/a', "\04Gurusamy"; gives 'Guru' + unpack 'a3/A* A*', '007 Bond J '; gives (' Bond','J') + pack 'n/a* w/a*','hello,','world'; gives "\000\006hello,\005world" The I is not returned explicitly from C. @@ -2858,7 +2883,7 @@ L: print $Config{longsize}, "\n"; print $Config{longlongsize}, "\n"; -(The C<$Config{longlongsize}> will be empty if your system does +(The C<$Config{longlongsize}> will be undefine if your system does not support long longs.) =item * @@ -2866,7 +2891,7 @@ not support long longs.) The integer formats C<"s">, C<"S">, C<"i">, C<"I">, C<"l">, and C<"L"> are inherently non-portable between processors and operating systems because they obey the native byteorder and endianness. For example a -4-byte integer 0x87654321 (2271560481 decimal) be ordered natively +4-byte integer 0x12345678 (305419896 decimal) be ordered natively (arranged in and handled by the CPU registers) into bytes as 0x12 0x34 0x56 0x78 # little-endian @@ -2882,7 +2907,7 @@ the classic "Gulliver's Travels" (via the paper "On Holy Wars and a Plea for Peace" by Danny Cohen, USC/ISI IEN 137, April 1, 1980) and the egg-eating habits of the Lilliputians. -Some systems may even have weird byte orders such as +Some systems may have even weirder byte orders such as 0x56 0x78 0x12 0x34 0x34 0x12 0x78 0x56 @@ -2928,6 +2953,10 @@ could know where the bytes are going to or coming from. Therefore C (and C) handle their output and input as flat sequences of bytes. +=item * + +A comment in a TEMPLATE starts with C<#> and goes to the end of line. + =back Examples: @@ -3266,6 +3295,10 @@ C cannot be used to retry a block which returns a value such as C, C or C, and should not be used to exit a grep() or map() operation. +Note that a block by itself is semantically identical to a loop +that executes once. Thus C inside such a block will effectively +turn it into a looping construct. + See also L for an illustration of how C, C, and C work. @@ -4101,6 +4134,7 @@ and the conversion letter: for integer l interpret integer as C type "long" or "unsigned long" h interpret integer as C type "short" or "unsigned short" + If no flags, interpret integer as C type "int" or "unsigned" There is also one Perl-specific flag: @@ -4116,9 +4150,16 @@ If C is in effect, the character used for the decimal point in formatted real numbers is affected by the LC_NUMERIC locale. See L. +To cope with broken systems that allow the standard locales to be +overridden by malicious users, the return value may be tainted +if any of the floating point formats are used and the conversion +yields something that doesn't look like a normal C-locale floating +point number. This happens regardless of whether C is +in effect or not. + If Perl understands "quads" (64-bit integers) (this requires either that the platform natively supports quads or that Perl -has been specifically compiled to support quads), the flags +has been specifically compiled to support quads), the characters d u o x X b i D U O @@ -4338,10 +4379,10 @@ out the names of those files that contain a match: =item sub NAME BLOCK This is subroutine definition, not a real function I. With just a -NAME (and possibly prototypes), it's just a forward declaration. Without -a NAME, it's an anonymous function declaration, and does actually return a -value: the CODE ref of the closure you just created. See L and -L for details. +NAME (and possibly prototypes or attributes), it's just a forward declaration. +Without a NAME, it's an anonymous function declaration, and does actually +return a value: the CODE ref of the closure you just created. See L +and L for details. =item substr EXPR,OFFSET,LENGTH,REPLACEMENT