0xff # hex
0377 # octal
0b011011 # binary
- v102.111.111 # string (made of characters "f", "o", "o")
String literals are usually delimited by either single or double
quotes. They work much like quotes in the standard Unix shells:
substitution; single-quoted strings are not (except for C<\'> and
C<\\>). The usual C-style backslash rules apply for making
characters such as newline, tab, etc., as well as some more exotic
-forms. See L<perlop/"Quote and Quotelike Operators"> for a list.
+forms. See L<perlop/"Quote and Quote-like Operators"> for a list.
Hexadecimal, octal, or binary, representations in string literals
(e.g. '0xff') are not automatically converted to their integer
for representing Unicode strings, and for comparing version "numbers"
using the string comparison operators, C<cmp>, C<gt>, C<lt> etc.
If there are two or more dots in the literal, the leading C<v> may be
-omitted. Such literals are accepted by both C<require> and C<use> for
+omitted.
+
+ print v9786; # prints UTF-8 encoded SMILEY, "\x{263a}"
+ print v102.111.111; # prints "foo"
+ print 102.111.111; # same
+
+Such literals are accepted by both C<require> and C<use> for
doing a version check. The C<$^V> special variable also contains the
running Perl interpreter's version in this form. See L<perlvar/$^V>.
In other words, C<*FH> must be used to create new symbol table entries;
C<*foo{THING}> cannot. When in doubt, use C<*FH>.
+All functions that are capable of creating filehandles (open(),
+opendir(), pipe(), socketpair(), sysopen(), socket(), and accept())
+automatically create an anonymous filehandle if the handle passed to
+them is an uninitialized scalar variable. This allows the constructs
+such as C<open(my $fh, ...)> and C<open(local $fh,...)> to be used to
+create filehandles that will conveniently be closed automatically when
+the scope ends, provided there are no other references to them. This
+largely eliminates the need for typeglobs when opening filehandles
+that must be passed around, as in the following example:
+
+ sub myopen {
+ open my $fh, "@_"
+ or die "Can't open '@_': $!";
+ return $fh;
+ }
+
+ {
+ my $f = myopen("</etc/motd");
+ print <$f>;
+ # $f implicitly closed here
+ }
+
Another way to create anonymous filehandles is with the Symbol
module or with the IO::Handle module and its ilk. These modules
have the advantage of not hiding different types of the same name