1=head1 NAME 2X<operator> 3 4perlop - Perl operators and precedence 5 6=head1 DESCRIPTION 7 8=head2 Operator Precedence and Associativity 9X<operator, precedence> X<precedence> X<associativity> 10 11Operator precedence and associativity work in Perl more or less like 12they do in mathematics. 13 14I<Operator precedence> means some operators are evaluated before 15others. For example, in C<2 + 4 * 5>, the multiplication has higher 16precedence so C<4 * 5> is evaluated first yielding C<2 + 20 == 1722> and not C<6 * 5 == 30>. 18 19I<Operator associativity> defines what happens if a sequence of the 20same operators is used one after another: whether the evaluator will 21evaluate the left operations first or the right. For example, in C<8 22- 4 - 2>, subtraction is left associative so Perl evaluates the 23expression left to right. C<8 - 4> is evaluated first making the 24expression C<4 - 2 == 2> and not C<8 - 2 == 6>. 25 26Perl operators have the following associativity and precedence, 27listed from highest precedence to lowest. Operators borrowed from 28C keep the same precedence relationship with each other, even where 29C's precedence is slightly screwy. (This makes learning Perl easier 30for C folks.) With very few exceptions, these all operate on scalar 31values only, not array values. 32 33 left terms and list operators (leftward) 34 left -> 35 nonassoc ++ -- 36 right ** 37 right ! ~ \ and unary + and - 38 left =~ !~ 39 left * / % x 40 left + - . 41 left << >> 42 nonassoc named unary operators 43 nonassoc < > <= >= lt gt le ge 44 nonassoc == != <=> eq ne cmp ~~ 45 left & 46 left | ^ 47 left && 48 left || // 49 nonassoc .. ... 50 right ?: 51 right = += -= *= etc. 52 left , => 53 nonassoc list operators (rightward) 54 right not 55 left and 56 left or xor 57 58In the following sections, these operators are covered in precedence order. 59 60Many operators can be overloaded for objects. See L<overload>. 61 62=head2 Terms and List Operators (Leftward) 63X<list operator> X<operator, list> X<term> 64 65A TERM has the highest precedence in Perl. They include variables, 66quote and quote-like operators, any expression in parentheses, 67and any function whose arguments are parenthesized. Actually, there 68aren't really functions in this sense, just list operators and unary 69operators behaving as functions because you put parentheses around 70the arguments. These are all documented in L<perlfunc>. 71 72If any list operator (print(), etc.) or any unary operator (chdir(), etc.) 73is followed by a left parenthesis as the next token, the operator and 74arguments within parentheses are taken to be of highest precedence, 75just like a normal function call. 76 77In the absence of parentheses, the precedence of list operators such as 78C<print>, C<sort>, or C<chmod> is either very high or very low depending on 79whether you are looking at the left side or the right side of the operator. 80For example, in 81 82 @ary = (1, 3, sort 4, 2); 83 print @ary; # prints 1324 84 85the commas on the right of the sort are evaluated before the sort, 86but the commas on the left are evaluated after. In other words, 87list operators tend to gobble up all arguments that follow, and 88then act like a simple TERM with regard to the preceding expression. 89Be careful with parentheses: 90 91 # These evaluate exit before doing the print: 92 print($foo, exit); # Obviously not what you want. 93 print $foo, exit; # Nor is this. 94 95 # These do the print before evaluating exit: 96 (print $foo), exit; # This is what you want. 97 print($foo), exit; # Or this. 98 print ($foo), exit; # Or even this. 99 100Also note that 101 102 print ($foo & 255) + 1, "\n"; 103 104probably doesn't do what you expect at first glance. The parentheses 105enclose the argument list for C<print> which is evaluated (printing 106the result of C<$foo & 255>). Then one is added to the return value 107of C<print> (usually 1). The result is something like this: 108 109 1 + 1, "\n"; # Obviously not what you meant. 110 111To do what you meant properly, you must write: 112 113 print(($foo & 255) + 1, "\n"); 114 115See L<Named Unary Operators> for more discussion of this. 116 117Also parsed as terms are the C<do {}> and C<eval {}> constructs, as 118well as subroutine and method calls, and the anonymous 119constructors C<[]> and C<{}>. 120 121See also L<Quote and Quote-like Operators> toward the end of this section, 122as well as L</"I/O Operators">. 123 124=head2 The Arrow Operator 125X<arrow> X<dereference> X<< -> >> 126 127"C<< -> >>" is an infix dereference operator, just as it is in C 128and C++. If the right side is either a C<[...]>, C<{...}>, or a 129C<(...)> subscript, then the left side must be either a hard or 130symbolic reference to an array, a hash, or a subroutine respectively. 131(Or technically speaking, a location capable of holding a hard 132reference, if it's an array or hash reference being used for 133assignment.) See L<perlreftut> and L<perlref>. 134 135Otherwise, the right side is a method name or a simple scalar 136variable containing either the method name or a subroutine reference, 137and the left side must be either an object (a blessed reference) 138or a class name (that is, a package name). See L<perlobj>. 139 140=head2 Auto-increment and Auto-decrement 141X<increment> X<auto-increment> X<++> X<decrement> X<auto-decrement> X<--> 142 143"++" and "--" work as in C. That is, if placed before a variable, 144they increment or decrement the variable by one before returning the 145value, and if placed after, increment or decrement after returning the 146value. 147 148 $i = 0; $j = 0; 149 print $i++; # prints 0 150 print ++$j; # prints 1 151 152Note that just as in C, Perl doesn't define B<when> the variable is 153incremented or decremented. You just know it will be done sometime 154before or after the value is returned. This also means that modifying 155a variable twice in the same statement will lead to undefined behaviour. 156Avoid statements like: 157 158 $i = $i ++; 159 print ++ $i + $i ++; 160 161Perl will not guarantee what the result of the above statements is. 162 163The auto-increment operator has a little extra builtin magic to it. If 164you increment a variable that is numeric, or that has ever been used in 165a numeric context, you get a normal increment. If, however, the 166variable has been used in only string contexts since it was set, and 167has a value that is not the empty string and matches the pattern 168C</^[a-zA-Z]*[0-9]*\z/>, the increment is done as a string, preserving each 169character within its range, with carry: 170 171 print ++($foo = '99'); # prints '100' 172 print ++($foo = 'a0'); # prints 'a1' 173 print ++($foo = 'Az'); # prints 'Ba' 174 print ++($foo = 'zz'); # prints 'aaa' 175 176C<undef> is always treated as numeric, and in particular is changed 177to C<0> before incrementing (so that a post-increment of an undef value 178will return C<0> rather than C<undef>). 179 180The auto-decrement operator is not magical. 181 182=head2 Exponentiation 183X<**> X<exponentiation> X<power> 184 185Binary "**" is the exponentiation operator. It binds even more 186tightly than unary minus, so -2**4 is -(2**4), not (-2)**4. (This is 187implemented using C's pow(3) function, which actually works on doubles 188internally.) 189 190=head2 Symbolic Unary Operators 191X<unary operator> X<operator, unary> 192 193Unary "!" performs logical negation, i.e., "not". See also C<not> for a lower 194precedence version of this. 195X<!> 196 197Unary "-" performs arithmetic negation if the operand is numeric. If 198the operand is an identifier, a string consisting of a minus sign 199concatenated with the identifier is returned. Otherwise, if the string 200starts with a plus or minus, a string starting with the opposite sign 201is returned. One effect of these rules is that -bareword is equivalent 202to the string "-bareword". If, however, the string begins with a 203non-alphabetic character (excluding "+" or "-"), Perl will attempt to convert 204the string to a numeric and the arithmetic negation is performed. If the 205string cannot be cleanly converted to a numeric, Perl will give the warning 206B<Argument "the string" isn't numeric in negation (-) at ...>. 207X<-> X<negation, arithmetic> 208 209Unary "~" performs bitwise negation, i.e., 1's complement. For 210example, C<0666 & ~027> is 0640. (See also L<Integer Arithmetic> and 211L<Bitwise String Operators>.) Note that the width of the result is 212platform-dependent: ~0 is 32 bits wide on a 32-bit platform, but 64 213bits wide on a 64-bit platform, so if you are expecting a certain bit 214width, remember to use the & operator to mask off the excess bits. 215X<~> X<negation, binary> 216 217Unary "+" has no effect whatsoever, even on strings. It is useful 218syntactically for separating a function name from a parenthesized expression 219that would otherwise be interpreted as the complete list of function 220arguments. (See examples above under L<Terms and List Operators (Leftward)>.) 221X<+> 222 223Unary "\" creates a reference to whatever follows it. See L<perlreftut> 224and L<perlref>. Do not confuse this behavior with the behavior of 225backslash within a string, although both forms do convey the notion 226of protecting the next thing from interpolation. 227X<\> X<reference> X<backslash> 228 229=head2 Binding Operators 230X<binding> X<operator, binding> X<=~> X<!~> 231 232Binary "=~" binds a scalar expression to a pattern match. Certain operations 233search or modify the string $_ by default. This operator makes that kind 234of operation work on some other string. The right argument is a search 235pattern, substitution, or transliteration. The left argument is what is 236supposed to be searched, substituted, or transliterated instead of the default 237$_. When used in scalar context, the return value generally indicates the 238success of the operation. Behavior in list context depends on the particular 239operator. See L</"Regexp Quote-Like Operators"> for details and 240L<perlretut> for examples using these operators. 241 242If the right argument is an expression rather than a search pattern, 243substitution, or transliteration, it is interpreted as a search pattern at run 244time. Note that this means that its contents will be interpolated twice, so 245 246 '\\' =~ q'\\'; 247 248is not ok, as the regex engine will end up trying to compile the 249pattern C<\>, which it will consider a syntax error. 250 251Binary "!~" is just like "=~" except the return value is negated in 252the logical sense. 253 254=head2 Multiplicative Operators 255X<operator, multiplicative> 256 257Binary "*" multiplies two numbers. 258X<*> 259 260Binary "/" divides two numbers. 261X</> X<slash> 262 263Binary "%" is the modulo operator, which computes the division 264remainder of its first argument with respect to its second argument. 265Given integer 266operands C<$a> and C<$b>: If C<$b> is positive, then C<$a % $b> is 267C<$a> minus the largest multiple of C<$b> less than or equal to 268C<$a>. If C<$b> is negative, then C<$a % $b> is C<$a> minus the 269smallest multiple of C<$b> that is not less than C<$a> (i.e. the 270result will be less than or equal to zero). If the operands 271C<$a> and C<$b> are floating point values and the absolute value of 272C<$b> (that is C<abs($b)>) is less than C<(UV_MAX + 1)>, only 273the integer portion of C<$a> and C<$b> will be used in the operation 274(Note: here C<UV_MAX> means the maximum of the unsigned integer type). 275If the absolute value of the right operand (C<abs($b)>) is greater than 276or equal to C<(UV_MAX + 1)>, "%" computes the floating-point remainder 277C<$r> in the equation C<($r = $a - $i*$b)> where C<$i> is a certain 278integer that makes C<$r> have the same sign as the right operand 279C<$b> (B<not> as the left operand C<$a> like C function C<fmod()>) 280and the absolute value less than that of C<$b>. 281Note that when C<use integer> is in scope, "%" gives you direct access 282to the modulo operator as implemented by your C compiler. This 283operator is not as well defined for negative operands, but it will 284execute faster. 285X<%> X<remainder> X<modulo> X<mod> 286 287Binary "x" is the repetition operator. In scalar context or if the left 288operand is not enclosed in parentheses, it returns a string consisting 289of the left operand repeated the number of times specified by the right 290operand. In list context, if the left operand is enclosed in 291parentheses or is a list formed by C<qw/STRING/>, it repeats the list. 292If the right operand is zero or negative, it returns an empty string 293or an empty list, depending on the context. 294X<x> 295 296 print '-' x 80; # print row of dashes 297 298 print "\t" x ($tab/8), ' ' x ($tab%8); # tab over 299 300 @ones = (1) x 80; # a list of 80 1's 301 @ones = (5) x @ones; # set all elements to 5 302 303 304=head2 Additive Operators 305X<operator, additive> 306 307Binary "+" returns the sum of two numbers. 308X<+> 309 310Binary "-" returns the difference of two numbers. 311X<-> 312 313Binary "." concatenates two strings. 314X<string, concatenation> X<concatenation> 315X<cat> X<concat> X<concatenate> X<.> 316 317=head2 Shift Operators 318X<shift operator> X<operator, shift> X<<< << >>> 319X<<< >> >>> X<right shift> X<left shift> X<bitwise shift> 320X<shl> X<shr> X<shift, right> X<shift, left> 321 322Binary "<<" returns the value of its left argument shifted left by the 323number of bits specified by the right argument. Arguments should be 324integers. (See also L<Integer Arithmetic>.) 325 326Binary ">>" returns the value of its left argument shifted right by 327the number of bits specified by the right argument. Arguments should 328be integers. (See also L<Integer Arithmetic>.) 329 330Note that both "<<" and ">>" in Perl are implemented directly using 331"<<" and ">>" in C. If C<use integer> (see L<Integer Arithmetic>) is 332in force then signed C integers are used, else unsigned C integers are 333used. Either way, the implementation isn't going to generate results 334larger than the size of the integer type Perl was built with (32 bits 335or 64 bits). 336 337The result of overflowing the range of the integers is undefined 338because it is undefined also in C. In other words, using 32-bit 339integers, C<< 1 << 32 >> is undefined. Shifting by a negative number 340of bits is also undefined. 341 342=head2 Named Unary Operators 343X<operator, named unary> 344 345The various named unary operators are treated as functions with one 346argument, with optional parentheses. 347 348If any list operator (print(), etc.) or any unary operator (chdir(), etc.) 349is followed by a left parenthesis as the next token, the operator and 350arguments within parentheses are taken to be of highest precedence, 351just like a normal function call. For example, 352because named unary operators are higher precedence than ||: 353 354 chdir $foo || die; # (chdir $foo) || die 355 chdir($foo) || die; # (chdir $foo) || die 356 chdir ($foo) || die; # (chdir $foo) || die 357 chdir +($foo) || die; # (chdir $foo) || die 358 359but, because * is higher precedence than named operators: 360 361 chdir $foo * 20; # chdir ($foo * 20) 362 chdir($foo) * 20; # (chdir $foo) * 20 363 chdir ($foo) * 20; # (chdir $foo) * 20 364 chdir +($foo) * 20; # chdir ($foo * 20) 365 366 rand 10 * 20; # rand (10 * 20) 367 rand(10) * 20; # (rand 10) * 20 368 rand (10) * 20; # (rand 10) * 20 369 rand +(10) * 20; # rand (10 * 20) 370 371Regarding precedence, the filetest operators, like C<-f>, C<-M>, etc. are 372treated like named unary operators, but they don't follow this functional 373parenthesis rule. That means, for example, that C<-f($file).".bak"> is 374equivalent to C<-f "$file.bak">. 375X<-X> X<filetest> X<operator, filetest> 376 377See also L<"Terms and List Operators (Leftward)">. 378 379=head2 Relational Operators 380X<relational operator> X<operator, relational> 381 382Binary "<" returns true if the left argument is numerically less than 383the right argument. 384X<< < >> 385 386Binary ">" returns true if the left argument is numerically greater 387than the right argument. 388X<< > >> 389 390Binary "<=" returns true if the left argument is numerically less than 391or equal to the right argument. 392X<< <= >> 393 394Binary ">=" returns true if the left argument is numerically greater 395than or equal to the right argument. 396X<< >= >> 397 398Binary "lt" returns true if the left argument is stringwise less than 399the right argument. 400X<< lt >> 401 402Binary "gt" returns true if the left argument is stringwise greater 403than the right argument. 404X<< gt >> 405 406Binary "le" returns true if the left argument is stringwise less than 407or equal to the right argument. 408X<< le >> 409 410Binary "ge" returns true if the left argument is stringwise greater 411than or equal to the right argument. 412X<< ge >> 413 414=head2 Equality Operators 415X<equality> X<equal> X<equals> X<operator, equality> 416 417Binary "==" returns true if the left argument is numerically equal to 418the right argument. 419X<==> 420 421Binary "!=" returns true if the left argument is numerically not equal 422to the right argument. 423X<!=> 424 425Binary "<=>" returns -1, 0, or 1 depending on whether the left 426argument is numerically less than, equal to, or greater than the right 427argument. If your platform supports NaNs (not-a-numbers) as numeric 428values, using them with "<=>" returns undef. NaN is not "<", "==", ">", 429"<=" or ">=" anything (even NaN), so those 5 return false. NaN != NaN 430returns true, as does NaN != anything else. If your platform doesn't 431support NaNs then NaN is just a string with numeric value 0. 432X<< <=> >> X<spaceship> 433 434 perl -le '$a = "NaN"; print "No NaN support here" if $a == $a' 435 perl -le '$a = "NaN"; print "NaN support here" if $a != $a' 436 437Binary "eq" returns true if the left argument is stringwise equal to 438the right argument. 439X<eq> 440 441Binary "ne" returns true if the left argument is stringwise not equal 442to the right argument. 443X<ne> 444 445Binary "cmp" returns -1, 0, or 1 depending on whether the left 446argument is stringwise less than, equal to, or greater than the right 447argument. 448X<cmp> 449 450Binary "~~" does a smart match between its arguments. Smart matching 451is described in L<perlsyn/"Smart matching in detail">. 452X<~~> 453 454"lt", "le", "ge", "gt" and "cmp" use the collation (sort) order specified 455by the current locale if C<use locale> is in effect. See L<perllocale>. 456 457=head2 Bitwise And 458X<operator, bitwise, and> X<bitwise and> X<&> 459 460Binary "&" returns its operands ANDed together bit by bit. 461(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) 462 463Note that "&" has lower priority than relational operators, so for example 464the brackets are essential in a test like 465 466 print "Even\n" if ($x & 1) == 0; 467 468=head2 Bitwise Or and Exclusive Or 469X<operator, bitwise, or> X<bitwise or> X<|> X<operator, bitwise, xor> 470X<bitwise xor> X<^> 471 472Binary "|" returns its operands ORed together bit by bit. 473(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) 474 475Binary "^" returns its operands XORed together bit by bit. 476(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) 477 478Note that "|" and "^" have lower priority than relational operators, so 479for example the brackets are essential in a test like 480 481 print "false\n" if (8 | 2) != 10; 482 483=head2 C-style Logical And 484X<&&> X<logical and> X<operator, logical, and> 485 486Binary "&&" performs a short-circuit logical AND operation. That is, 487if the left operand is false, the right operand is not even evaluated. 488Scalar or list context propagates down to the right operand if it 489is evaluated. 490 491=head2 C-style Logical Or 492X<||> X<operator, logical, or> 493 494Binary "||" performs a short-circuit logical OR operation. That is, 495if the left operand is true, the right operand is not even evaluated. 496Scalar or list context propagates down to the right operand if it 497is evaluated. 498 499=head2 C-style Logical Defined-Or 500X<//> X<operator, logical, defined-or> 501 502Although it has no direct equivalent in C, Perl's C<//> operator is related 503to its C-style or. In fact, it's exactly the same as C<||>, except that it 504tests the left hand side's definedness instead of its truth. Thus, C<$a // $b> 505is similar to C<defined($a) || $b> (except that it returns the value of C<$a> 506rather than the value of C<defined($a)>) and is exactly equivalent to 507C<defined($a) ? $a : $b>. This is very useful for providing default values 508for variables. If you actually want to test if at least one of C<$a> and 509C<$b> is defined, use C<defined($a // $b)>. 510 511The C<||>, C<//> and C<&&> operators return the last value evaluated 512(unlike C's C<||> and C<&&>, which return 0 or 1). Thus, a reasonably 513portable way to find out the home directory might be: 514 515 $home = $ENV{'HOME'} // $ENV{'LOGDIR'} // 516 (getpwuid($<))[7] // die "You're homeless!\n"; 517 518In particular, this means that you shouldn't use this 519for selecting between two aggregates for assignment: 520 521 @a = @b || @c; # this is wrong 522 @a = scalar(@b) || @c; # really meant this 523 @a = @b ? @b : @c; # this works fine, though 524 525As more readable alternatives to C<&&> and C<||> when used for 526control flow, Perl provides the C<and> and C<or> operators (see below). 527The short-circuit behavior is identical. The precedence of "and" 528and "or" is much lower, however, so that you can safely use them after a 529list operator without the need for parentheses: 530 531 unlink "alpha", "beta", "gamma" 532 or gripe(), next LINE; 533 534With the C-style operators that would have been written like this: 535 536 unlink("alpha", "beta", "gamma") 537 || (gripe(), next LINE); 538 539Using "or" for assignment is unlikely to do what you want; see below. 540 541=head2 Range Operators 542X<operator, range> X<range> X<..> X<...> 543 544Binary ".." is the range operator, which is really two different 545operators depending on the context. In list context, it returns a 546list of values counting (up by ones) from the left value to the right 547value. If the left value is greater than the right value then it 548returns the empty list. The range operator is useful for writing 549C<foreach (1..10)> loops and for doing slice operations on arrays. In 550the current implementation, no temporary array is created when the 551range operator is used as the expression in C<foreach> loops, but older 552versions of Perl might burn a lot of memory when you write something 553like this: 554 555 for (1 .. 1_000_000) { 556 # code 557 } 558 559The range operator also works on strings, using the magical auto-increment, 560see below. 561 562In scalar context, ".." returns a boolean value. The operator is 563bistable, like a flip-flop, and emulates the line-range (comma) operator 564of B<sed>, B<awk>, and various editors. Each ".." operator maintains its 565own boolean state. It is false as long as its left operand is false. 566Once the left operand is true, the range operator stays true until the 567right operand is true, I<AFTER> which the range operator becomes false 568again. It doesn't become false till the next time the range operator is 569evaluated. It can test the right operand and become false on the same 570evaluation it became true (as in B<awk>), but it still returns true once. 571If you don't want it to test the right operand till the next 572evaluation, as in B<sed>, just use three dots ("...") instead of 573two. In all other regards, "..." behaves just like ".." does. 574 575The right operand is not evaluated while the operator is in the 576"false" state, and the left operand is not evaluated while the 577operator is in the "true" state. The precedence is a little lower 578than || and &&. The value returned is either the empty string for 579false, or a sequence number (beginning with 1) for true. The 580sequence number is reset for each range encountered. The final 581sequence number in a range has the string "E0" appended to it, which 582doesn't affect its numeric value, but gives you something to search 583for if you want to exclude the endpoint. You can exclude the 584beginning point by waiting for the sequence number to be greater 585than 1. 586 587If either operand of scalar ".." is a constant expression, 588that operand is considered true if it is equal (C<==>) to the current 589input line number (the C<$.> variable). 590 591To be pedantic, the comparison is actually C<int(EXPR) == int(EXPR)>, 592but that is only an issue if you use a floating point expression; when 593implicitly using C<$.> as described in the previous paragraph, the 594comparison is C<int(EXPR) == int($.)> which is only an issue when C<$.> 595is set to a floating point value and you are not reading from a file. 596Furthermore, C<"span" .. "spat"> or C<2.18 .. 3.14> will not do what 597you want in scalar context because each of the operands are evaluated 598using their integer representation. 599 600Examples: 601 602As a scalar operator: 603 604 if (101 .. 200) { print; } # print 2nd hundred lines, short for 605 # if ($. == 101 .. $. == 200) { print; } 606 607 next LINE if (1 .. /^$/); # skip header lines, short for 608 # next LINE if ($. == 1 .. /^$/); 609 # (typically in a loop labeled LINE) 610 611 s/^/> / if (/^$/ .. eof()); # quote body 612 613 # parse mail messages 614 while (<>) { 615 $in_header = 1 .. /^$/; 616 $in_body = /^$/ .. eof; 617 if ($in_header) { 618 # do something 619 } else { # in body 620 # do something else 621 } 622 } continue { 623 close ARGV if eof; # reset $. each file 624 } 625 626Here's a simple example to illustrate the difference between 627the two range operators: 628 629 @lines = (" - Foo", 630 "01 - Bar", 631 "1 - Baz", 632 " - Quux"); 633 634 foreach (@lines) { 635 if (/0/ .. /1/) { 636 print "$_\n"; 637 } 638 } 639 640This program will print only the line containing "Bar". If 641the range operator is changed to C<...>, it will also print the 642"Baz" line. 643 644And now some examples as a list operator: 645 646 for (101 .. 200) { print; } # print $_ 100 times 647 @foo = @foo[0 .. $#foo]; # an expensive no-op 648 @foo = @foo[$#foo-4 .. $#foo]; # slice last 5 items 649 650The range operator (in list context) makes use of the magical 651auto-increment algorithm if the operands are strings. You 652can say 653 654 @alphabet = ('A' .. 'Z'); 655 656to get all normal letters of the English alphabet, or 657 658 $hexdigit = (0 .. 9, 'a' .. 'f')[$num & 15]; 659 660to get a hexadecimal digit, or 661 662 @z2 = ('01' .. '31'); print $z2[$mday]; 663 664to get dates with leading zeros. 665 666If the final value specified is not in the sequence that the magical 667increment would produce, the sequence goes until the next value would 668be longer than the final value specified. 669 670If the initial value specified isn't part of a magical increment 671sequence (that is, a non-empty string matching "/^[a-zA-Z]*[0-9]*\z/"), 672only the initial value will be returned. So the following will only 673return an alpha: 674 675 use charnames 'greek'; 676 my @greek_small = ("\N{alpha}" .. "\N{omega}"); 677 678To get lower-case greek letters, use this instead: 679 680 my @greek_small = map { chr } ( ord("\N{alpha}") .. ord("\N{omega}") ); 681 682Because each operand is evaluated in integer form, C<2.18 .. 3.14> will 683return two elements in list context. 684 685 @list = (2.18 .. 3.14); # same as @list = (2 .. 3); 686 687=head2 Conditional Operator 688X<operator, conditional> X<operator, ternary> X<ternary> X<?:> 689 690Ternary "?:" is the conditional operator, just as in C. It works much 691like an if-then-else. If the argument before the ? is true, the 692argument before the : is returned, otherwise the argument after the : 693is returned. For example: 694 695 printf "I have %d dog%s.\n", $n, 696 ($n == 1) ? '' : "s"; 697 698Scalar or list context propagates downward into the 2nd 699or 3rd argument, whichever is selected. 700 701 $a = $ok ? $b : $c; # get a scalar 702 @a = $ok ? @b : @c; # get an array 703 $a = $ok ? @b : @c; # oops, that's just a count! 704 705The operator may be assigned to if both the 2nd and 3rd arguments are 706legal lvalues (meaning that you can assign to them): 707 708 ($a_or_b ? $a : $b) = $c; 709 710Because this operator produces an assignable result, using assignments 711without parentheses will get you in trouble. For example, this: 712 713 $a % 2 ? $a += 10 : $a += 2 714 715Really means this: 716 717 (($a % 2) ? ($a += 10) : $a) += 2 718 719Rather than this: 720 721 ($a % 2) ? ($a += 10) : ($a += 2) 722 723That should probably be written more simply as: 724 725 $a += ($a % 2) ? 10 : 2; 726 727=head2 Assignment Operators 728X<assignment> X<operator, assignment> X<=> X<**=> X<+=> X<*=> X<&=> 729X<<< <<= >>> X<&&=> X<-=> X</=> X<|=> X<<< >>= >>> X<||=> X<//=> X<.=> 730X<%=> X<^=> X<x=> 731 732"=" is the ordinary assignment operator. 733 734Assignment operators work as in C. That is, 735 736 $a += 2; 737 738is equivalent to 739 740 $a = $a + 2; 741 742although without duplicating any side effects that dereferencing the lvalue 743might trigger, such as from tie(). Other assignment operators work similarly. 744The following are recognized: 745 746 **= += *= &= <<= &&= 747 -= /= |= >>= ||= 748 .= %= ^= //= 749 x= 750 751Although these are grouped by family, they all have the precedence 752of assignment. 753 754Unlike in C, the scalar assignment operator produces a valid lvalue. 755Modifying an assignment is equivalent to doing the assignment and 756then modifying the variable that was assigned to. This is useful 757for modifying a copy of something, like this: 758 759 ($tmp = $global) =~ tr [A-Z] [a-z]; 760 761Likewise, 762 763 ($a += 2) *= 3; 764 765is equivalent to 766 767 $a += 2; 768 $a *= 3; 769 770Similarly, a list assignment in list context produces the list of 771lvalues assigned to, and a list assignment in scalar context returns 772the number of elements produced by the expression on the right hand 773side of the assignment. 774 775=head2 Comma Operator 776X<comma> X<operator, comma> X<,> 777 778Binary "," is the comma operator. In scalar context it evaluates 779its left argument, throws that value away, then evaluates its right 780argument and returns that value. This is just like C's comma operator. 781 782In list context, it's just the list argument separator, and inserts 783both its arguments into the list. These arguments are also evaluated 784from left to right. 785 786The C<< => >> operator is a synonym for the comma except that it causes 787its left operand to be interpreted as a string if it begins with a letter 788or underscore and is composed only of letters, digits and underscores. 789This includes operands that might otherwise be interpreted as operators, 790constants, single number v-strings or function calls. If in doubt about 791this behaviour, the left operand can be quoted explicitly. 792 793Otherwise, the C<< => >> operator behaves exactly as the comma operator 794or list argument separator, according to context. 795 796For example: 797 798 use constant FOO => "something"; 799 800 my %h = ( FOO => 23 ); 801 802is equivalent to: 803 804 my %h = ("FOO", 23); 805 806It is I<NOT>: 807 808 my %h = ("something", 23); 809 810The C<< => >> operator is helpful in documenting the correspondence 811between keys and values in hashes, and other paired elements in lists. 812 813 %hash = ( $key => $value ); 814 login( $username => $password ); 815 816=head2 List Operators (Rightward) 817X<operator, list, rightward> X<list operator> 818 819On the right side of a list operator, it has very low precedence, 820such that it controls all comma-separated expressions found there. 821The only operators with lower precedence are the logical operators 822"and", "or", and "not", which may be used to evaluate calls to list 823operators without the need for extra parentheses: 824 825 open HANDLE, "filename" 826 or die "Can't open: $!\n"; 827 828See also discussion of list operators in L<Terms and List Operators (Leftward)>. 829 830=head2 Logical Not 831X<operator, logical, not> X<not> 832 833Unary "not" returns the logical negation of the expression to its right. 834It's the equivalent of "!" except for the very low precedence. 835 836=head2 Logical And 837X<operator, logical, and> X<and> 838 839Binary "and" returns the logical conjunction of the two surrounding 840expressions. It's equivalent to && except for the very low 841precedence. This means that it short-circuits: i.e., the right 842expression is evaluated only if the left expression is true. 843 844=head2 Logical or, Defined or, and Exclusive Or 845X<operator, logical, or> X<operator, logical, xor> 846X<operator, logical, defined or> X<operator, logical, exclusive or> 847X<or> X<xor> 848 849Binary "or" returns the logical disjunction of the two surrounding 850expressions. It's equivalent to || except for the very low precedence. 851This makes it useful for control flow 852 853 print FH $data or die "Can't write to FH: $!"; 854 855This means that it short-circuits: i.e., the right expression is evaluated 856only if the left expression is false. Due to its precedence, you should 857probably avoid using this for assignment, only for control flow. 858 859 $a = $b or $c; # bug: this is wrong 860 ($a = $b) or $c; # really means this 861 $a = $b || $c; # better written this way 862 863However, when it's a list-context assignment and you're trying to use 864"||" for control flow, you probably need "or" so that the assignment 865takes higher precedence. 866 867 @info = stat($file) || die; # oops, scalar sense of stat! 868 @info = stat($file) or die; # better, now @info gets its due 869 870Then again, you could always use parentheses. 871 872Binary "xor" returns the exclusive-OR of the two surrounding expressions. 873It cannot short circuit, of course. 874 875=head2 C Operators Missing From Perl 876X<operator, missing from perl> X<&> X<*> 877X<typecasting> X<(TYPE)> 878 879Here is what C has that Perl doesn't: 880 881=over 8 882 883=item unary & 884 885Address-of operator. (But see the "\" operator for taking a reference.) 886 887=item unary * 888 889Dereference-address operator. (Perl's prefix dereferencing 890operators are typed: $, @, %, and &.) 891 892=item (TYPE) 893 894Type-casting operator. 895 896=back 897 898=head2 Quote and Quote-like Operators 899X<operator, quote> X<operator, quote-like> X<q> X<qq> X<qx> X<qw> X<m> 900X<qr> X<s> X<tr> X<'> X<''> X<"> X<""> X<//> X<`> X<``> X<<< << >>> 901X<escape sequence> X<escape> 902 903 904While we usually think of quotes as literal values, in Perl they 905function as operators, providing various kinds of interpolating and 906pattern matching capabilities. Perl provides customary quote characters 907for these behaviors, but also provides a way for you to choose your 908quote character for any of them. In the following table, a C<{}> represents 909any pair of delimiters you choose. 910 911 Customary Generic Meaning Interpolates 912 '' q{} Literal no 913 "" qq{} Literal yes 914 `` qx{} Command yes* 915 qw{} Word list no 916 // m{} Pattern match yes* 917 qr{} Pattern yes* 918 s{}{} Substitution yes* 919 tr{}{} Transliteration no (but see below) 920 <<EOF here-doc yes* 921 922 * unless the delimiter is ''. 923 924Non-bracketing delimiters use the same character fore and aft, but the four 925sorts of brackets (round, angle, square, curly) will all nest, which means 926that 927 928 q{foo{bar}baz} 929 930is the same as 931 932 'foo{bar}baz' 933 934Note, however, that this does not always work for quoting Perl code: 935 936 $s = q{ if($a eq "}") ... }; # WRONG 937 938is a syntax error. The C<Text::Balanced> module (from CPAN, and 939starting from Perl 5.8 part of the standard distribution) is able 940to do this properly. 941 942There can be whitespace between the operator and the quoting 943characters, except when C<#> is being used as the quoting character. 944C<q#foo#> is parsed as the string C<foo>, while C<q #foo#> is the 945operator C<q> followed by a comment. Its argument will be taken 946from the next line. This allows you to write: 947 948 s {foo} # Replace foo 949 {bar} # with bar. 950 951The following escape sequences are available in constructs that interpolate 952and in transliterations. 953X<\t> X<\n> X<\r> X<\f> X<\b> X<\a> X<\e> X<\x> X<\0> X<\c> X<\N> 954X<\t> X<\r> X<\f> X<\b> X<\a> X<\e> X<\x> X<\0> X<\c> X<\N> 955 956 \t tab (HT, TAB) 957 \n newline (NL) 958 \r return (CR) 959 \f form feed (FF) 960 \b backspace (BS) 961 \a alarm (bell) (BEL) 962 \e escape (ESC) 963 \033 octal char (example: ESC) 964 \x1b hex char (example: ESC) 965 \x{263a} wide hex char (example: SMILEY) 966 \c[ control char (example: ESC) 967 \N{name} named Unicode character 968 969The character following C<\c> is mapped to some other character by 970converting letters to upper case and then (on ASCII systems) by inverting 971the 7th bit (0x40). The most interesting range is from '@' to '_' 972(0x40 through 0x5F), resulting in a control character from 0x00 973through 0x1F. A '?' maps to the DEL character. On EBCDIC systems only 974'@', the letters, '[', '\', ']', '^', '_' and '?' will work, resulting 975in 0x00 through 0x1F and 0x7F. 976 977B<NOTE>: Unlike C and other languages, Perl has no \v escape sequence for 978the vertical tab (VT - ASCII 11), but you may use C<\ck> or C<\x0b>. 979 980The following escape sequences are available in constructs that interpolate 981but not in transliterations. 982X<\l> X<\u> X<\L> X<\U> X<\E> X<\Q> 983 984 \l lowercase next char 985 \u uppercase next char 986 \L lowercase till \E 987 \U uppercase till \E 988 \E end case modification 989 \Q quote non-word characters till \E 990 991If C<use locale> is in effect, the case map used by C<\l>, C<\L>, 992C<\u> and C<\U> is taken from the current locale. See L<perllocale>. 993If Unicode (for example, C<\N{}> or wide hex characters of 0x100 or 994beyond) is being used, the case map used by C<\l>, C<\L>, C<\u> and 995C<\U> is as defined by Unicode. For documentation of C<\N{name}>, 996see L<charnames>. 997 998All systems use the virtual C<"\n"> to represent a line terminator, 999called a "newline". There is no such thing as an unvarying, physical 1000newline character. It is only an illusion that the operating system, 1001device drivers, C libraries, and Perl all conspire to preserve. Not all 1002systems read C<"\r"> as ASCII CR and C<"\n"> as ASCII LF. For example, 1003on a Mac, these are reversed, and on systems without line terminator, 1004printing C<"\n"> may emit no actual data. In general, use C<"\n"> when 1005you mean a "newline" for your system, but use the literal ASCII when you 1006need an exact character. For example, most networking protocols expect 1007and prefer a CR+LF (C<"\015\012"> or C<"\cM\cJ">) for line terminators, 1008and although they often accept just C<"\012">, they seldom tolerate just 1009C<"\015">. If you get in the habit of using C<"\n"> for networking, 1010you may be burned some day. 1011X<newline> X<line terminator> X<eol> X<end of line> 1012X<\r> 1013 1014For constructs that do interpolate, variables beginning with "C<$>" 1015or "C<@>" are interpolated. Subscripted variables such as C<$a[3]> or 1016C<< $href->{key}[0] >> are also interpolated, as are array and hash slices. 1017But method calls such as C<< $obj->meth >> are not. 1018 1019Interpolating an array or slice interpolates the elements in order, 1020separated by the value of C<$">, so is equivalent to interpolating 1021C<join $", @array>. "Punctuation" arrays such as C<@*> are only 1022interpolated if the name is enclosed in braces C<@{*}>, but special 1023arrays C<@_>, C<@+>, and C<@-> are interpolated, even without braces. 1024 1025You cannot include a literal C<$> or C<@> within a C<\Q> sequence. 1026An unescaped C<$> or C<@> interpolates the corresponding variable, 1027while escaping will cause the literal string C<\$> to be inserted. 1028You'll need to write something like C<m/\Quser\E\@\Qhost/>. 1029 1030Patterns are subject to an additional level of interpretation as a 1031regular expression. This is done as a second pass, after variables are 1032interpolated, so that regular expressions may be incorporated into the 1033pattern from the variables. If this is not what you want, use C<\Q> to 1034interpolate a variable literally. 1035 1036Apart from the behavior described above, Perl does not expand 1037multiple levels of interpolation. In particular, contrary to the 1038expectations of shell programmers, back-quotes do I<NOT> interpolate 1039within double quotes, nor do single quotes impede evaluation of 1040variables when used within double quotes. 1041 1042=head2 Regexp Quote-Like Operators 1043X<operator, regexp> 1044 1045Here are the quote-like operators that apply to pattern 1046matching and related activities. 1047 1048=over 8 1049 1050=item qr/STRING/msixpo 1051X<qr> X</i> X</m> X</o> X</s> X</x> X</p> 1052 1053This operator quotes (and possibly compiles) its I<STRING> as a regular 1054expression. I<STRING> is interpolated the same way as I<PATTERN> 1055in C<m/PATTERN/>. If "'" is used as the delimiter, no interpolation 1056is done. Returns a Perl value which may be used instead of the 1057corresponding C</STRING/msixpo> expression. The returned value is a 1058normalized version of the original pattern. It magically differs from 1059a string containing the same characters: C<ref(qr/x/)> returns "Regexp", 1060even though dereferencing the result returns undef. 1061 1062For example, 1063 1064 $rex = qr/my.STRING/is; 1065 print $rex; # prints (?si-xm:my.STRING) 1066 s/$rex/foo/; 1067 1068is equivalent to 1069 1070 s/my.STRING/foo/is; 1071 1072The result may be used as a subpattern in a match: 1073 1074 $re = qr/$pattern/; 1075 $string =~ /foo${re}bar/; # can be interpolated in other patterns 1076 $string =~ $re; # or used standalone 1077 $string =~ /$re/; # or this way 1078 1079Since Perl may compile the pattern at the moment of execution of qr() 1080operator, using qr() may have speed advantages in some situations, 1081notably if the result of qr() is used standalone: 1082 1083 sub match { 1084 my $patterns = shift; 1085 my @compiled = map qr/$_/i, @$patterns; 1086 grep { 1087 my $success = 0; 1088 foreach my $pat (@compiled) { 1089 $success = 1, last if /$pat/; 1090 } 1091 $success; 1092 } @_; 1093 } 1094 1095Precompilation of the pattern into an internal representation at 1096the moment of qr() avoids a need to recompile the pattern every 1097time a match C</$pat/> is attempted. (Perl has many other internal 1098optimizations, but none would be triggered in the above example if 1099we did not use qr() operator.) 1100 1101Options are: 1102 1103 m Treat string as multiple lines. 1104 s Treat string as single line. (Make . match a newline) 1105 i Do case-insensitive pattern matching. 1106 x Use extended regular expressions. 1107 p When matching preserve a copy of the matched string so 1108 that ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} will be defined. 1109 o Compile pattern only once. 1110 1111If a precompiled pattern is embedded in a larger pattern then the effect 1112of 'msixp' will be propagated appropriately. The effect of the 'o' 1113modifier has is not propagated, being restricted to those patterns 1114explicitly using it. 1115 1116See L<perlre> for additional information on valid syntax for STRING, and 1117for a detailed look at the semantics of regular expressions. 1118 1119=item m/PATTERN/msixpogc 1120X<m> X<operator, match> 1121X<regexp, options> X<regexp> X<regex, options> X<regex> 1122X</m> X</s> X</i> X</x> X</p> X</o> X</g> X</c> 1123 1124=item /PATTERN/msixpogc 1125 1126Searches a string for a pattern match, and in scalar context returns 1127true if it succeeds, false if it fails. If no string is specified 1128via the C<=~> or C<!~> operator, the $_ string is searched. (The 1129string specified with C<=~> need not be an lvalue--it may be the 1130result of an expression evaluation, but remember the C<=~> binds 1131rather tightly.) See also L<perlre>. See L<perllocale> for 1132discussion of additional considerations that apply when C<use locale> 1133is in effect. 1134 1135Options are as described in C<qr//>; in addition, the following match 1136process modifiers are available: 1137 1138 g Match globally, i.e., find all occurrences. 1139 c Do not reset search position on a failed match when /g is in effect. 1140 1141If "/" is the delimiter then the initial C<m> is optional. With the C<m> 1142you can use any pair of non-alphanumeric, non-whitespace characters 1143as delimiters. This is particularly useful for matching path names 1144that contain "/", to avoid LTS (leaning toothpick syndrome). If "?" is 1145the delimiter, then the match-only-once rule of C<?PATTERN?> applies. 1146If "'" is the delimiter, no interpolation is performed on the PATTERN. 1147 1148PATTERN may contain variables, which will be interpolated (and the 1149pattern recompiled) every time the pattern search is evaluated, except 1150for when the delimiter is a single quote. (Note that C<$(>, C<$)>, and 1151C<$|> are not interpolated because they look like end-of-string tests.) 1152If you want such a pattern to be compiled only once, add a C</o> after 1153the trailing delimiter. This avoids expensive run-time recompilations, 1154and is useful when the value you are interpolating won't change over 1155the life of the script. However, mentioning C</o> constitutes a promise 1156that you won't change the variables in the pattern. If you change them, 1157Perl won't even notice. See also L<"qr/STRING/msixpo">. 1158 1159=item The empty pattern // 1160 1161If the PATTERN evaluates to the empty string, the last 1162I<successfully> matched regular expression is used instead. In this 1163case, only the C<g> and C<c> flags on the empty pattern is honoured - 1164the other flags are taken from the original pattern. If no match has 1165previously succeeded, this will (silently) act instead as a genuine 1166empty pattern (which will always match). 1167 1168Note that it's possible to confuse Perl into thinking C<//> (the empty 1169regex) is really C<//> (the defined-or operator). Perl is usually pretty 1170good about this, but some pathological cases might trigger this, such as 1171C<$a///> (is that C<($a) / (//)> or C<$a // />?) and C<print $fh //> 1172(C<print $fh(//> or C<print($fh //>?). In all of these examples, Perl 1173will assume you meant defined-or. If you meant the empty regex, just 1174use parentheses or spaces to disambiguate, or even prefix the empty 1175regex with an C<m> (so C<//> becomes C<m//>). 1176 1177=item Matching in list context 1178 1179If the C</g> option is not used, C<m//> in list context returns a 1180list consisting of the subexpressions matched by the parentheses in the 1181pattern, i.e., (C<$1>, C<$2>, C<$3>...). (Note that here C<$1> etc. are 1182also set, and that this differs from Perl 4's behavior.) When there are 1183no parentheses in the pattern, the return value is the list C<(1)> for 1184success. With or without parentheses, an empty list is returned upon 1185failure. 1186 1187Examples: 1188 1189 open(TTY, '/dev/tty'); 1190 <TTY> =~ /^y/i && foo(); # do foo if desired 1191 1192 if (/Version: *([0-9.]*)/) { $version = $1; } 1193 1194 next if m#^/usr/spool/uucp#; 1195 1196 # poor man's grep 1197 $arg = shift; 1198 while (<>) { 1199 print if /$arg/o; # compile only once 1200 } 1201 1202 if (($F1, $F2, $Etc) = ($foo =~ /^(\S+)\s+(\S+)\s*(.*)/)) 1203 1204This last example splits $foo into the first two words and the 1205remainder of the line, and assigns those three fields to $F1, $F2, and 1206$Etc. The conditional is true if any variables were assigned, i.e., if 1207the pattern matched. 1208 1209The C</g> modifier specifies global pattern matching--that is, 1210matching as many times as possible within the string. How it behaves 1211depends on the context. In list context, it returns a list of the 1212substrings matched by any capturing parentheses in the regular 1213expression. If there are no parentheses, it returns a list of all 1214the matched strings, as if there were parentheses around the whole 1215pattern. 1216 1217In scalar context, each execution of C<m//g> finds the next match, 1218returning true if it matches, and false if there is no further match. 1219The position after the last match can be read or set using the pos() 1220function; see L<perlfunc/pos>. A failed match normally resets the 1221search position to the beginning of the string, but you can avoid that 1222by adding the C</c> modifier (e.g. C<m//gc>). Modifying the target 1223string also resets the search position. 1224 1225=item \G assertion 1226 1227You can intermix C<m//g> matches with C<m/\G.../g>, where C<\G> is a 1228zero-width assertion that matches the exact position where the previous 1229C<m//g>, if any, left off. Without the C</g> modifier, the C<\G> assertion 1230still anchors at pos(), but the match is of course only attempted once. 1231Using C<\G> without C</g> on a target string that has not previously had a 1232C</g> match applied to it is the same as using the C<\A> assertion to match 1233the beginning of the string. Note also that, currently, C<\G> is only 1234properly supported when anchored at the very beginning of the pattern. 1235 1236Examples: 1237 1238 # list context 1239 ($one,$five,$fifteen) = (`uptime` =~ /(\d+\.\d+)/g); 1240 1241 # scalar context 1242 $/ = ""; 1243 while (defined($paragraph = <>)) { 1244 while ($paragraph =~ /[a-z]['")]*[.!?]+['")]*\s/g) { 1245 $sentences++; 1246 } 1247 } 1248 print "$sentences\n"; 1249 1250 # using m//gc with \G 1251 $_ = "ppooqppqq"; 1252 while ($i++ < 2) { 1253 print "1: '"; 1254 print $1 while /(o)/gc; print "', pos=", pos, "\n"; 1255 print "2: '"; 1256 print $1 if /\G(q)/gc; print "', pos=", pos, "\n"; 1257 print "3: '"; 1258 print $1 while /(p)/gc; print "', pos=", pos, "\n"; 1259 } 1260 print "Final: '$1', pos=",pos,"\n" if /\G(.)/; 1261 1262The last example should print: 1263 1264 1: 'oo', pos=4 1265 2: 'q', pos=5 1266 3: 'pp', pos=7 1267 1: '', pos=7 1268 2: 'q', pos=8 1269 3: '', pos=8 1270 Final: 'q', pos=8 1271 1272Notice that the final match matched C<q> instead of C<p>, which a match 1273without the C<\G> anchor would have done. Also note that the final match 1274did not update C<pos> -- C<pos> is only updated on a C</g> match. If the 1275final match did indeed match C<p>, it's a good bet that you're running an 1276older (pre-5.6.0) Perl. 1277 1278A useful idiom for C<lex>-like scanners is C</\G.../gc>. You can 1279combine several regexps like this to process a string part-by-part, 1280doing different actions depending on which regexp matched. Each 1281regexp tries to match where the previous one leaves off. 1282 1283 $_ = <<'EOL'; 1284 $url = URI::URL->new( "http://www/" ); die if $url eq "xXx"; 1285 EOL 1286 LOOP: 1287 { 1288 print(" digits"), redo LOOP if /\G\d+\b[,.;]?\s*/gc; 1289 print(" lowercase"), redo LOOP if /\G[a-z]+\b[,.;]?\s*/gc; 1290 print(" UPPERCASE"), redo LOOP if /\G[A-Z]+\b[,.;]?\s*/gc; 1291 print(" Capitalized"), redo LOOP if /\G[A-Z][a-z]+\b[,.;]?\s*/gc; 1292 print(" MiXeD"), redo LOOP if /\G[A-Za-z]+\b[,.;]?\s*/gc; 1293 print(" alphanumeric"), redo LOOP if /\G[A-Za-z0-9]+\b[,.;]?\s*/gc; 1294 print(" line-noise"), redo LOOP if /\G[^A-Za-z0-9]+/gc; 1295 print ". That's all!\n"; 1296 } 1297 1298Here is the output (split into several lines): 1299 1300 line-noise lowercase line-noise lowercase UPPERCASE line-noise 1301 UPPERCASE line-noise lowercase line-noise lowercase line-noise 1302 lowercase lowercase line-noise lowercase lowercase line-noise 1303 MiXeD line-noise. That's all! 1304 1305=item ?PATTERN? 1306X<?> 1307 1308This is just like the C</pattern/> search, except that it matches only 1309once between calls to the reset() operator. This is a useful 1310optimization when you want to see only the first occurrence of 1311something in each file of a set of files, for instance. Only C<??> 1312patterns local to the current package are reset. 1313 1314 while (<>) { 1315 if (?^$?) { 1316 # blank line between header and body 1317 } 1318 } continue { 1319 reset if eof; # clear ?? status for next file 1320 } 1321 1322This usage is vaguely deprecated, which means it just might possibly 1323be removed in some distant future version of Perl, perhaps somewhere 1324around the year 2168. 1325 1326=item s/PATTERN/REPLACEMENT/msixpogce 1327X<substitute> X<substitution> X<replace> X<regexp, replace> 1328X<regexp, substitute> X</m> X</s> X</i> X</x> X</p> X</o> X</g> X</c> X</e> 1329 1330Searches a string for a pattern, and if found, replaces that pattern 1331with the replacement text and returns the number of substitutions 1332made. Otherwise it returns false (specifically, the empty string). 1333 1334If no string is specified via the C<=~> or C<!~> operator, the C<$_> 1335variable is searched and modified. (The string specified with C<=~> must 1336be scalar variable, an array element, a hash element, or an assignment 1337to one of those, i.e., an lvalue.) 1338 1339If the delimiter chosen is a single quote, no interpolation is 1340done on either the PATTERN or the REPLACEMENT. Otherwise, if the 1341PATTERN contains a $ that looks like a variable rather than an 1342end-of-string test, the variable will be interpolated into the pattern 1343at run-time. If you want the pattern compiled only once the first time 1344the variable is interpolated, use the C</o> option. If the pattern 1345evaluates to the empty string, the last successfully executed regular 1346expression is used instead. See L<perlre> for further explanation on these. 1347See L<perllocale> for discussion of additional considerations that apply 1348when C<use locale> is in effect. 1349 1350Options are as with m// with the addition of the following replacement 1351specific options: 1352 1353 e Evaluate the right side as an expression. 1354 ee Evaluate the right side as a string then eval the result 1355 1356Any non-alphanumeric, non-whitespace delimiter may replace the 1357slashes. If single quotes are used, no interpretation is done on the 1358replacement string (the C</e> modifier overrides this, however). Unlike 1359Perl 4, Perl 5 treats backticks as normal delimiters; the replacement 1360text is not evaluated as a command. If the 1361PATTERN is delimited by bracketing quotes, the REPLACEMENT has its own 1362pair of quotes, which may or may not be bracketing quotes, e.g., 1363C<s(foo)(bar)> or C<< s<foo>/bar/ >>. A C</e> will cause the 1364replacement portion to be treated as a full-fledged Perl expression 1365and evaluated right then and there. It is, however, syntax checked at 1366compile-time. A second C<e> modifier will cause the replacement portion 1367to be C<eval>ed before being run as a Perl expression. 1368 1369Examples: 1370 1371 s/\bgreen\b/mauve/g; # don't change wintergreen 1372 1373 $path =~ s|/usr/bin|/usr/local/bin|; 1374 1375 s/Login: $foo/Login: $bar/; # run-time pattern 1376 1377 ($foo = $bar) =~ s/this/that/; # copy first, then change 1378 1379 $count = ($paragraph =~ s/Mister\b/Mr./g); # get change-count 1380 1381 $_ = 'abc123xyz'; 1382 s/\d+/$&*2/e; # yields 'abc246xyz' 1383 s/\d+/sprintf("%5d",$&)/e; # yields 'abc 246xyz' 1384 s/\w/$& x 2/eg; # yields 'aabbcc 224466xxyyzz' 1385 1386 s/%(.)/$percent{$1}/g; # change percent escapes; no /e 1387 s/%(.)/$percent{$1} || $&/ge; # expr now, so /e 1388 s/^=(\w+)/pod($1)/ge; # use function call 1389 1390 # expand variables in $_, but dynamics only, using 1391 # symbolic dereferencing 1392 s/\$(\w+)/${$1}/g; 1393 1394 # Add one to the value of any numbers in the string 1395 s/(\d+)/1 + $1/eg; 1396 1397 # This will expand any embedded scalar variable 1398 # (including lexicals) in $_ : First $1 is interpolated 1399 # to the variable name, and then evaluated 1400 s/(\$\w+)/$1/eeg; 1401 1402 # Delete (most) C comments. 1403 $program =~ s { 1404 /\* # Match the opening delimiter. 1405 .*? # Match a minimal number of characters. 1406 \*/ # Match the closing delimiter. 1407 } []gsx; 1408 1409 s/^\s*(.*?)\s*$/$1/; # trim whitespace in $_, expensively 1410 1411 for ($variable) { # trim whitespace in $variable, cheap 1412 s/^\s+//; 1413 s/\s+$//; 1414 } 1415 1416 s/([^ ]*) *([^ ]*)/$2 $1/; # reverse 1st two fields 1417 1418Note the use of $ instead of \ in the last example. Unlike 1419B<sed>, we use the \<I<digit>> form in only the left hand side. 1420Anywhere else it's $<I<digit>>. 1421 1422Occasionally, you can't use just a C</g> to get all the changes 1423to occur that you might want. Here are two common cases: 1424 1425 # put commas in the right places in an integer 1426 1 while s/(\d)(\d\d\d)(?!\d)/$1,$2/g; 1427 1428 # expand tabs to 8-column spacing 1429 1 while s/\t+/' ' x (length($&)*8 - length($`)%8)/e; 1430 1431=back 1432 1433=head2 Quote-Like Operators 1434X<operator, quote-like> 1435 1436=over 4 1437 1438=item q/STRING/ 1439X<q> X<quote, single> X<'> X<''> 1440 1441=item 'STRING' 1442 1443A single-quoted, literal string. A backslash represents a backslash 1444unless followed by the delimiter or another backslash, in which case 1445the delimiter or backslash is interpolated. 1446 1447 $foo = q!I said, "You said, 'She said it.'"!; 1448 $bar = q('This is it.'); 1449 $baz = '\n'; # a two-character string 1450 1451=item qq/STRING/ 1452X<qq> X<quote, double> X<"> X<""> 1453 1454=item "STRING" 1455 1456A double-quoted, interpolated string. 1457 1458 $_ .= qq 1459 (*** The previous line contains the naughty word "$1".\n) 1460 if /\b(tcl|java|python)\b/i; # :-) 1461 $baz = "\n"; # a one-character string 1462 1463=item qx/STRING/ 1464X<qx> X<`> X<``> X<backtick> 1465 1466=item `STRING` 1467 1468A string which is (possibly) interpolated and then executed as a 1469system command with C</bin/sh> or its equivalent. Shell wildcards, 1470pipes, and redirections will be honored. The collected standard 1471output of the command is returned; standard error is unaffected. In 1472scalar context, it comes back as a single (potentially multi-line) 1473string, or undef if the command failed. In list context, returns a 1474list of lines (however you've defined lines with $/ or 1475$INPUT_RECORD_SEPARATOR), or an empty list if the command failed. 1476 1477Because backticks do not affect standard error, use shell file descriptor 1478syntax (assuming the shell supports this) if you care to address this. 1479To capture a command's STDERR and STDOUT together: 1480 1481 $output = `cmd 2>&1`; 1482 1483To capture a command's STDOUT but discard its STDERR: 1484 1485 $output = `cmd 2>/dev/null`; 1486 1487To capture a command's STDERR but discard its STDOUT (ordering is 1488important here): 1489 1490 $output = `cmd 2>&1 1>/dev/null`; 1491 1492To exchange a command's STDOUT and STDERR in order to capture the STDERR 1493but leave its STDOUT to come out the old STDERR: 1494 1495 $output = `cmd 3>&1 1>&2 2>&3 3>&-`; 1496 1497To read both a command's STDOUT and its STDERR separately, it's easiest 1498to redirect them separately to files, and then read from those files 1499when the program is done: 1500 1501 system("program args 1>program.stdout 2>program.stderr"); 1502 1503The STDIN filehandle used by the command is inherited from Perl's STDIN. 1504For example: 1505 1506 open BLAM, "blam" || die "Can't open: $!"; 1507 open STDIN, "<&BLAM"; 1508 print `sort`; 1509 1510will print the sorted contents of the file "blam". 1511 1512Using single-quote as a delimiter protects the command from Perl's 1513double-quote interpolation, passing it on to the shell instead: 1514 1515 $perl_info = qx(ps $$); # that's Perl's $$ 1516 $shell_info = qx'ps $$'; # that's the new shell's $$ 1517 1518How that string gets evaluated is entirely subject to the command 1519interpreter on your system. On most platforms, you will have to protect 1520shell metacharacters if you want them treated literally. This is in 1521practice difficult to do, as it's unclear how to escape which characters. 1522See L<perlsec> for a clean and safe example of a manual fork() and exec() 1523to emulate backticks safely. 1524 1525On some platforms (notably DOS-like ones), the shell may not be 1526capable of dealing with multiline commands, so putting newlines in 1527the string may not get you what you want. You may be able to evaluate 1528multiple commands in a single line by separating them with the command 1529separator character, if your shell supports that (e.g. C<;> on many Unix 1530shells; C<&> on the Windows NT C<cmd> shell). 1531 1532Beginning with v5.6.0, Perl will attempt to flush all files opened for 1533output before starting the child process, but this may not be supported 1534on some platforms (see L<perlport>). To be safe, you may need to set 1535C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method of 1536C<IO::Handle> on any open handles. 1537 1538Beware that some command shells may place restrictions on the length 1539of the command line. You must ensure your strings don't exceed this 1540limit after any necessary interpolations. See the platform-specific 1541release notes for more details about your particular environment. 1542 1543Using this operator can lead to programs that are difficult to port, 1544because the shell commands called vary between systems, and may in 1545fact not be present at all. As one example, the C<type> command under 1546the POSIX shell is very different from the C<type> command under DOS. 1547That doesn't mean you should go out of your way to avoid backticks 1548when they're the right way to get something done. Perl was made to be 1549a glue language, and one of the things it glues together is commands. 1550Just understand what you're getting yourself into. 1551 1552See L</"I/O Operators"> for more discussion. 1553 1554=item qw/STRING/ 1555X<qw> X<quote, list> X<quote, words> 1556 1557Evaluates to a list of the words extracted out of STRING, using embedded 1558whitespace as the word delimiters. It can be understood as being roughly 1559equivalent to: 1560 1561 split(' ', q/STRING/); 1562 1563the differences being that it generates a real list at compile time, and 1564in scalar context it returns the last element in the list. So 1565this expression: 1566 1567 qw(foo bar baz) 1568 1569is semantically equivalent to the list: 1570 1571 'foo', 'bar', 'baz' 1572 1573Some frequently seen examples: 1574 1575 use POSIX qw( setlocale localeconv ) 1576 @EXPORT = qw( foo bar baz ); 1577 1578A common mistake is to try to separate the words with comma or to 1579put comments into a multi-line C<qw>-string. For this reason, the 1580C<use warnings> pragma and the B<-w> switch (that is, the C<$^W> variable) 1581produces warnings if the STRING contains the "," or the "#" character. 1582 1583 1584=item tr/SEARCHLIST/REPLACEMENTLIST/cds 1585X<tr> X<y> X<transliterate> X</c> X</d> X</s> 1586 1587=item y/SEARCHLIST/REPLACEMENTLIST/cds 1588 1589Transliterates all occurrences of the characters found in the search list 1590with the corresponding character in the replacement list. It returns 1591the number of characters replaced or deleted. If no string is 1592specified via the =~ or !~ operator, the $_ string is transliterated. (The 1593string specified with =~ must be a scalar variable, an array element, a 1594hash element, or an assignment to one of those, i.e., an lvalue.) 1595 1596A character range may be specified with a hyphen, so C<tr/A-J/0-9/> 1597does the same replacement as C<tr/ACEGIBDFHJ/0246813579/>. 1598For B<sed> devotees, C<y> is provided as a synonym for C<tr>. If the 1599SEARCHLIST is delimited by bracketing quotes, the REPLACEMENTLIST has 1600its own pair of quotes, which may or may not be bracketing quotes, 1601e.g., C<tr[A-Z][a-z]> or C<tr(+\-*/)/ABCD/>. 1602 1603Note that C<tr> does B<not> do regular expression character classes 1604such as C<\d> or C<[:lower:]>. The C<tr> operator is not equivalent to 1605the tr(1) utility. If you want to map strings between lower/upper 1606cases, see L<perlfunc/lc> and L<perlfunc/uc>, and in general consider 1607using the C<s> operator if you need regular expressions. 1608 1609Note also that the whole range idea is rather unportable between 1610character sets--and even within character sets they may cause results 1611you probably didn't expect. A sound principle is to use only ranges 1612that begin from and end at either alphabets of equal case (a-e, A-E), 1613or digits (0-4). Anything else is unsafe. If in doubt, spell out the 1614character sets in full. 1615 1616Options: 1617 1618 c Complement the SEARCHLIST. 1619 d Delete found but unreplaced characters. 1620 s Squash duplicate replaced characters. 1621 1622If the C</c> modifier is specified, the SEARCHLIST character set 1623is complemented. If the C</d> modifier is specified, any characters 1624specified by SEARCHLIST not found in REPLACEMENTLIST are deleted. 1625(Note that this is slightly more flexible than the behavior of some 1626B<tr> programs, which delete anything they find in the SEARCHLIST, 1627period.) If the C</s> modifier is specified, sequences of characters 1628that were transliterated to the same character are squashed down 1629to a single instance of the character. 1630 1631If the C</d> modifier is used, the REPLACEMENTLIST is always interpreted 1632exactly as specified. Otherwise, if the REPLACEMENTLIST is shorter 1633than the SEARCHLIST, the final character is replicated till it is long 1634enough. If the REPLACEMENTLIST is empty, the SEARCHLIST is replicated. 1635This latter is useful for counting characters in a class or for 1636squashing character sequences in a class. 1637 1638Examples: 1639 1640 $ARGV[1] =~ tr/A-Z/a-z/; # canonicalize to lower case 1641 1642 $cnt = tr/*/*/; # count the stars in $_ 1643 1644 $cnt = $sky =~ tr/*/*/; # count the stars in $sky 1645 1646 $cnt = tr/0-9//; # count the digits in $_ 1647 1648 tr/a-zA-Z//s; # bookkeeper -> bokeper 1649 1650 ($HOST = $host) =~ tr/a-z/A-Z/; 1651 1652 tr/a-zA-Z/ /cs; # change non-alphas to single space 1653 1654 tr [\200-\377] 1655 [\000-\177]; # delete 8th bit 1656 1657If multiple transliterations are given for a character, only the 1658first one is used: 1659 1660 tr/AAA/XYZ/ 1661 1662will transliterate any A to X. 1663 1664Because the transliteration table is built at compile time, neither 1665the SEARCHLIST nor the REPLACEMENTLIST are subjected to double quote 1666interpolation. That means that if you want to use variables, you 1667must use an eval(): 1668 1669 eval "tr/$oldlist/$newlist/"; 1670 die $@ if $@; 1671 1672 eval "tr/$oldlist/$newlist/, 1" or die $@; 1673 1674=item <<EOF 1675X<here-doc> X<heredoc> X<here-document> X<<< << >>> 1676 1677A line-oriented form of quoting is based on the shell "here-document" 1678syntax. Following a C<< << >> you specify a string to terminate 1679the quoted material, and all lines following the current line down to 1680the terminating string are the value of the item. 1681 1682The terminating string may be either an identifier (a word), or some 1683quoted text. An unquoted identifier works like double quotes. 1684There may not be a space between the C<< << >> and the identifier, 1685unless the identifier is explicitly quoted. (If you put a space it 1686will be treated as a null identifier, which is valid, and matches the 1687first empty line.) The terminating string must appear by itself 1688(unquoted and with no surrounding whitespace) on the terminating line. 1689 1690If the terminating string is quoted, the type of quotes used determine 1691the treatment of the text. 1692 1693=over 4 1694 1695=item Double Quotes 1696 1697Double quotes indicate that the text will be interpolated using exactly 1698the same rules as normal double quoted strings. 1699 1700 print <<EOF; 1701 The price is $Price. 1702 EOF 1703 1704 print << "EOF"; # same as above 1705 The price is $Price. 1706 EOF 1707 1708 1709=item Single Quotes 1710 1711Single quotes indicate the text is to be treated literally with no 1712interpolation of its content. This is similar to single quoted 1713strings except that backslashes have no special meaning, with C<\\> 1714being treated as two backslashes and not one as they would in every 1715other quoting construct. 1716 1717This is the only form of quoting in perl where there is no need 1718to worry about escaping content, something that code generators 1719can and do make good use of. 1720 1721=item Backticks 1722 1723The content of the here doc is treated just as it would be if the 1724string were embedded in backticks. Thus the content is interpolated 1725as though it were double quoted and then executed via the shell, with 1726the results of the execution returned. 1727 1728 print << `EOC`; # execute command and get results 1729 echo hi there 1730 EOC 1731 1732=back 1733 1734It is possible to stack multiple here-docs in a row: 1735 1736 print <<"foo", <<"bar"; # you can stack them 1737 I said foo. 1738 foo 1739 I said bar. 1740 bar 1741 1742 myfunc(<< "THIS", 23, <<'THAT'); 1743 Here's a line 1744 or two. 1745 THIS 1746 and here's another. 1747 THAT 1748 1749Just don't forget that you have to put a semicolon on the end 1750to finish the statement, as Perl doesn't know you're not going to 1751try to do this: 1752 1753 print <<ABC 1754 179231 1755 ABC 1756 + 20; 1757 1758If you want to remove the line terminator from your here-docs, 1759use C<chomp()>. 1760 1761 chomp($string = <<'END'); 1762 This is a string. 1763 END 1764 1765If you want your here-docs to be indented with the rest of the code, 1766you'll need to remove leading whitespace from each line manually: 1767 1768 ($quote = <<'FINIS') =~ s/^\s+//gm; 1769 The Road goes ever on and on, 1770 down from the door where it began. 1771 FINIS 1772 1773If you use a here-doc within a delimited construct, such as in C<s///eg>, 1774the quoted material must come on the lines following the final delimiter. 1775So instead of 1776 1777 s/this/<<E . 'that' 1778 the other 1779 E 1780 . 'more '/eg; 1781 1782you have to write 1783 1784 s/this/<<E . 'that' 1785 . 'more '/eg; 1786 the other 1787 E 1788 1789If the terminating identifier is on the last line of the program, you 1790must be sure there is a newline after it; otherwise, Perl will give the 1791warning B<Can't find string terminator "END" anywhere before EOF...>. 1792 1793Additionally, the quoting rules for the end of string identifier are not 1794related to Perl's quoting rules -- C<q()>, C<qq()>, and the like are not 1795supported in place of C<''> and C<"">, and the only interpolation is for 1796backslashing the quoting character: 1797 1798 print << "abc\"def"; 1799 testing... 1800 abc"def 1801 1802Finally, quoted strings cannot span multiple lines. The general rule is 1803that the identifier must be a string literal. Stick with that, and you 1804should be safe. 1805 1806=back 1807 1808=head2 Gory details of parsing quoted constructs 1809X<quote, gory details> 1810 1811When presented with something that might have several different 1812interpretations, Perl uses the B<DWIM> (that's "Do What I Mean") 1813principle to pick the most probable interpretation. This strategy 1814is so successful that Perl programmers often do not suspect the 1815ambivalence of what they write. But from time to time, Perl's 1816notions differ substantially from what the author honestly meant. 1817 1818This section hopes to clarify how Perl handles quoted constructs. 1819Although the most common reason to learn this is to unravel labyrinthine 1820regular expressions, because the initial steps of parsing are the 1821same for all quoting operators, they are all discussed together. 1822 1823The most important Perl parsing rule is the first one discussed 1824below: when processing a quoted construct, Perl first finds the end 1825of that construct, then interprets its contents. If you understand 1826this rule, you may skip the rest of this section on the first 1827reading. The other rules are likely to contradict the user's 1828expectations much less frequently than this first one. 1829 1830Some passes discussed below are performed concurrently, but because 1831their results are the same, we consider them individually. For different 1832quoting constructs, Perl performs different numbers of passes, from 1833one to four, but these passes are always performed in the same order. 1834 1835=over 4 1836 1837=item Finding the end 1838 1839The first pass is finding the end of the quoted construct, where 1840the information about the delimiters is used in parsing. 1841During this search, text between the starting and ending delimiters 1842is copied to a safe location. The text copied gets delimiter-independent. 1843 1844If the construct is a here-doc, the ending delimiter is a line 1845that has a terminating string as the content. Therefore C<<<EOF> is 1846terminated by C<EOF> immediately followed by C<"\n"> and starting 1847from the first column of the terminating line. 1848When searching for the terminating line of a here-doc, nothing 1849is skipped. In other words, lines after the here-doc syntax 1850are compared with the terminating string line by line. 1851 1852For the constructs except here-docs, single characters are used as starting 1853and ending delimiters. If the starting delimiter is an opening punctuation 1854(that is C<(>, C<[>, C<{>, or C<< < >>), the ending delimiter is the 1855corresponding closing punctuation (that is C<)>, C<]>, C<}>, or C<< > >>). 1856If the starting delimiter is an unpaired character like C</> or a closing 1857punctuation, the ending delimiter is same as the starting delimiter. 1858Therefore a C</> terminates a C<qq//> construct, while a C<]> terminates 1859C<qq[]> and C<qq]]> constructs. 1860 1861When searching for single-character delimiters, escaped delimiters 1862and C<\\> are skipped. For example, while searching for terminating C</>, 1863combinations of C<\\> and C<\/> are skipped. If the delimiters are 1864bracketing, nested pairs are also skipped. For example, while searching 1865for closing C<]> paired with the opening C<[>, combinations of C<\\>, C<\]>, 1866and C<\[> are all skipped, and nested C<[> and C<]> are skipped as well. 1867However, when backslashes are used as the delimiters (like C<qq\\> and 1868C<tr\\\>), nothing is skipped. 1869During the search for the end, backslashes that escape delimiters 1870are removed (exactly speaking, they are not copied to the safe location). 1871 1872For constructs with three-part delimiters (C<s///>, C<y///>, and 1873C<tr///>), the search is repeated once more. 1874If the first delimiter is not an opening punctuation, three delimiters must 1875be same such as C<s!!!> and C<tr)))>, in which case the second delimiter 1876terminates the left part and starts the right part at once. 1877If the left part is delimited by bracketing punctuations (that is C<()>, 1878C<[]>, C<{}>, or C<< <> >>), the right part needs another pair of 1879delimiters such as C<s(){}> and C<tr[]//>. In these cases, whitespaces 1880and comments are allowed between both parts, though the comment must follow 1881at least one whitespace; otherwise a character expected as the start of 1882the comment may be regarded as the starting delimiter of the right part. 1883 1884During this search no attention is paid to the semantics of the construct. 1885Thus: 1886 1887 "$hash{"$foo/$bar"}" 1888 1889or: 1890 1891 m/ 1892 bar # NOT a comment, this slash / terminated m//! 1893 /x 1894 1895do not form legal quoted expressions. The quoted part ends on the 1896first C<"> and C</>, and the rest happens to be a syntax error. 1897Because the slash that terminated C<m//> was followed by a C<SPACE>, 1898the example above is not C<m//x>, but rather C<m//> with no C</x> 1899modifier. So the embedded C<#> is interpreted as a literal C<#>. 1900 1901Also no attention is paid to C<\c\> (multichar control char syntax) during 1902this search. Thus the second C<\> in C<qq/\c\/> is interpreted as a part 1903of C<\/>, and the following C</> is not recognized as a delimiter. 1904Instead, use C<\034> or C<\x1c> at the end of quoted constructs. 1905 1906=item Interpolation 1907X<interpolation> 1908 1909The next step is interpolation in the text obtained, which is now 1910delimiter-independent. There are multiple cases. 1911 1912=over 4 1913 1914=item C<<<'EOF'> 1915 1916No interpolation is performed. 1917Note that the combination C<\\> is left intact, since escaped delimiters 1918are not available for here-docs. 1919 1920=item C<m''>, the pattern of C<s'''> 1921 1922No interpolation is performed at this stage. 1923Any backslashed sequences including C<\\> are treated at the stage 1924to L</"parsing regular expressions">. 1925 1926=item C<''>, C<q//>, C<tr'''>, C<y'''>, the replacement of C<s'''> 1927 1928The only interpolation is removal of C<\> from pairs of C<\\>. 1929Therefore C<-> in C<tr'''> and C<y'''> is treated literally 1930as a hyphen and no character range is available. 1931C<\1> in the replacement of C<s'''> does not work as C<$1>. 1932 1933=item C<tr///>, C<y///> 1934 1935No variable interpolation occurs. String modifying combinations for 1936case and quoting such as C<\Q>, C<\U>, and C<\E> are not recognized. 1937The other escape sequences such as C<\200> and C<\t> and backslashed 1938characters such as C<\\> and C<\-> are converted to appropriate literals. 1939The character C<-> is treated specially and therefore C<\-> is treated 1940as a literal C<->. 1941 1942=item C<"">, C<``>, C<qq//>, C<qx//>, C<< <file*glob> >>, C<<<"EOF"> 1943 1944C<\Q>, C<\U>, C<\u>, C<\L>, C<\l> (possibly paired with C<\E>) are 1945converted to corresponding Perl constructs. Thus, C<"$foo\Qbaz$bar"> 1946is converted to C<$foo . (quotemeta("baz" . $bar))> internally. 1947The other escape sequences such as C<\200> and C<\t> and backslashed 1948characters such as C<\\> and C<\-> are replaced with appropriate 1949expansions. 1950 1951Let it be stressed that I<whatever falls between C<\Q> and C<\E>> 1952is interpolated in the usual way. Something like C<"\Q\\E"> has 1953no C<\E> inside. instead, it has C<\Q>, C<\\>, and C<E>, so the 1954result is the same as for C<"\\\\E">. As a general rule, backslashes 1955between C<\Q> and C<\E> may lead to counterintuitive results. So, 1956C<"\Q\t\E"> is converted to C<quotemeta("\t")>, which is the same 1957as C<"\\\t"> (since TAB is not alphanumeric). Note also that: 1958 1959 $str = '\t'; 1960 return "\Q$str"; 1961 1962may be closer to the conjectural I<intention> of the writer of C<"\Q\t\E">. 1963 1964Interpolated scalars and arrays are converted internally to the C<join> and 1965C<.> catenation operations. Thus, C<"$foo XXX '@arr'"> becomes: 1966 1967 $foo . " XXX '" . (join $", @arr) . "'"; 1968 1969All operations above are performed simultaneously, left to right. 1970 1971Because the result of C<"\Q STRING \E"> has all metacharacters 1972quoted, there is no way to insert a literal C<$> or C<@> inside a 1973C<\Q\E> pair. If protected by C<\>, C<$> will be quoted to became 1974C<"\\\$">; if not, it is interpreted as the start of an interpolated 1975scalar. 1976 1977Note also that the interpolation code needs to make a decision on 1978where the interpolated scalar ends. For instance, whether 1979C<< "a $b -> {c}" >> really means: 1980 1981 "a " . $b . " -> {c}"; 1982 1983or: 1984 1985 "a " . $b -> {c}; 1986 1987Most of the time, the longest possible text that does not include 1988spaces between components and which contains matching braces or 1989brackets. because the outcome may be determined by voting based 1990on heuristic estimators, the result is not strictly predictable. 1991Fortunately, it's usually correct for ambiguous cases. 1992 1993=item the replacement of C<s///> 1994 1995Processing of C<\Q>, C<\U>, C<\u>, C<\L>, C<\l>, and interpolation 1996happens as with C<qq//> constructs. 1997 1998It is at this step that C<\1> is begrudgingly converted to C<$1> in 1999the replacement text of C<s///>, in order to correct the incorrigible 2000I<sed> hackers who haven't picked up the saner idiom yet. A warning 2001is emitted if the C<use warnings> pragma or the B<-w> command-line flag 2002(that is, the C<$^W> variable) was set. 2003 2004=item C<RE> in C<?RE?>, C</RE/>, C<m/RE/>, C<s/RE/foo/>, 2005 2006Processing of C<\Q>, C<\U>, C<\u>, C<\L>, C<\l>, C<\E>, 2007and interpolation happens (almost) as with C<qq//> constructs. 2008 2009However any other combinations of C<\> followed by a character 2010are not substituted but only skipped, in order to parse them 2011as regular expressions at the following step. 2012As C<\c> is skipped at this step, C<@> of C<\c@> in RE is possibly 2013treated as an array symbol (for example C<@foo>), 2014even though the same text in C<qq//> gives interpolation of C<\c@>. 2015 2016Moreover, inside C<(?{BLOCK})>, C<(?# comment )>, and 2017a C<#>-comment in a C<//x>-regular expression, no processing is 2018performed whatsoever. This is the first step at which the presence 2019of the C<//x> modifier is relevant. 2020 2021Interpolation in patterns has several quirks: C<$|>, C<$(>, C<$)>, C<@+> 2022and C<@-> are not interpolated, and constructs C<$var[SOMETHING]> are 2023voted (by several different estimators) to be either an array element 2024or C<$var> followed by an RE alternative. This is where the notation 2025C<${arr[$bar]}> comes handy: C</${arr[0-9]}/> is interpreted as 2026array element C<-9>, not as a regular expression from the variable 2027C<$arr> followed by a digit, which would be the interpretation of 2028C</$arr[0-9]/>. Since voting among different estimators may occur, 2029the result is not predictable. 2030 2031The lack of processing of C<\\> creates specific restrictions on 2032the post-processed text. If the delimiter is C</>, one cannot get 2033the combination C<\/> into the result of this step. C</> will 2034finish the regular expression, C<\/> will be stripped to C</> on 2035the previous step, and C<\\/> will be left as is. Because C</> is 2036equivalent to C<\/> inside a regular expression, this does not 2037matter unless the delimiter happens to be character special to the 2038RE engine, such as in C<s*foo*bar*>, C<m[foo]>, or C<?foo?>; or an 2039alphanumeric char, as in: 2040 2041 m m ^ a \s* b mmx; 2042 2043In the RE above, which is intentionally obfuscated for illustration, the 2044delimiter is C<m>, the modifier is C<mx>, and after delimiter-removal the 2045RE is the same as for C<m/ ^ a \s* b /mx>. There's more than one 2046reason you're encouraged to restrict your delimiters to non-alphanumeric, 2047non-whitespace choices. 2048 2049=back 2050 2051This step is the last one for all constructs except regular expressions, 2052which are processed further. 2053 2054=item parsing regular expressions 2055X<regexp, parse> 2056 2057Previous steps were performed during the compilation of Perl code, 2058but this one happens at run time--although it may be optimized to 2059be calculated at compile time if appropriate. After preprocessing 2060described above, and possibly after evaluation if concatenation, 2061joining, casing translation, or metaquoting are involved, the 2062resulting I<string> is passed to the RE engine for compilation. 2063 2064Whatever happens in the RE engine might be better discussed in L<perlre>, 2065but for the sake of continuity, we shall do so here. 2066 2067This is another step where the presence of the C<//x> modifier is 2068relevant. The RE engine scans the string from left to right and 2069converts it to a finite automaton. 2070 2071Backslashed characters are either replaced with corresponding 2072literal strings (as with C<\{>), or else they generate special nodes 2073in the finite automaton (as with C<\b>). Characters special to the 2074RE engine (such as C<|>) generate corresponding nodes or groups of 2075nodes. C<(?#...)> comments are ignored. All the rest is either 2076converted to literal strings to match, or else is ignored (as is 2077whitespace and C<#>-style comments if C<//x> is present). 2078 2079Parsing of the bracketed character class construct, C<[...]>, is 2080rather different than the rule used for the rest of the pattern. 2081The terminator of this construct is found using the same rules as 2082for finding the terminator of a C<{}>-delimited construct, the only 2083exception being that C<]> immediately following C<[> is treated as 2084though preceded by a backslash. Similarly, the terminator of 2085C<(?{...})> is found using the same rules as for finding the 2086terminator of a C<{}>-delimited construct. 2087 2088It is possible to inspect both the string given to RE engine and the 2089resulting finite automaton. See the arguments C<debug>/C<debugcolor> 2090in the C<use L<re>> pragma, as well as Perl's B<-Dr> command-line 2091switch documented in L<perlrun/"Command Switches">. 2092 2093=item Optimization of regular expressions 2094X<regexp, optimization> 2095 2096This step is listed for completeness only. Since it does not change 2097semantics, details of this step are not documented and are subject 2098to change without notice. This step is performed over the finite 2099automaton that was generated during the previous pass. 2100 2101It is at this stage that C<split()> silently optimizes C</^/> to 2102mean C</^/m>. 2103 2104=back 2105 2106=head2 I/O Operators 2107X<operator, i/o> X<operator, io> X<io> X<while> X<filehandle> 2108X<< <> >> X<@ARGV> 2109 2110There are several I/O operators you should know about. 2111 2112A string enclosed by backticks (grave accents) first undergoes 2113double-quote interpolation. It is then interpreted as an external 2114command, and the output of that command is the value of the 2115backtick string, like in a shell. In scalar context, a single string 2116consisting of all output is returned. In list context, a list of 2117values is returned, one per line of output. (You can set C<$/> to use 2118a different line terminator.) The command is executed each time the 2119pseudo-literal is evaluated. The status value of the command is 2120returned in C<$?> (see L<perlvar> for the interpretation of C<$?>). 2121Unlike in B<csh>, no translation is done on the return data--newlines 2122remain newlines. Unlike in any of the shells, single quotes do not 2123hide variable names in the command from interpretation. To pass a 2124literal dollar-sign through to the shell you need to hide it with a 2125backslash. The generalized form of backticks is C<qx//>. (Because 2126backticks always undergo shell expansion as well, see L<perlsec> for 2127security concerns.) 2128X<qx> X<`> X<``> X<backtick> X<glob> 2129 2130In scalar context, evaluating a filehandle in angle brackets yields 2131the next line from that file (the newline, if any, included), or 2132C<undef> at end-of-file or on error. When C<$/> is set to C<undef> 2133(sometimes known as file-slurp mode) and the file is empty, it 2134returns C<''> the first time, followed by C<undef> subsequently. 2135 2136Ordinarily you must assign the returned value to a variable, but 2137there is one situation where an automatic assignment happens. If 2138and only if the input symbol is the only thing inside the conditional 2139of a C<while> statement (even if disguised as a C<for(;;)> loop), 2140the value is automatically assigned to the global variable $_, 2141destroying whatever was there previously. (This may seem like an 2142odd thing to you, but you'll use the construct in almost every Perl 2143script you write.) The $_ variable is not implicitly localized. 2144You'll have to put a C<local $_;> before the loop if you want that 2145to happen. 2146 2147The following lines are equivalent: 2148 2149 while (defined($_ = <STDIN>)) { print; } 2150 while ($_ = <STDIN>) { print; } 2151 while (<STDIN>) { print; } 2152 for (;<STDIN>;) { print; } 2153 print while defined($_ = <STDIN>); 2154 print while ($_ = <STDIN>); 2155 print while <STDIN>; 2156 2157This also behaves similarly, but avoids $_ : 2158 2159 while (my $line = <STDIN>) { print $line } 2160 2161In these loop constructs, the assigned value (whether assignment 2162is automatic or explicit) is then tested to see whether it is 2163defined. The defined test avoids problems where line has a string 2164value that would be treated as false by Perl, for example a "" or 2165a "0" with no trailing newline. If you really mean for such values 2166to terminate the loop, they should be tested for explicitly: 2167 2168 while (($_ = <STDIN>) ne '0') { ... } 2169 while (<STDIN>) { last unless $_; ... } 2170 2171In other boolean contexts, C<< <I<filehandle>> >> without an 2172explicit C<defined> test or comparison elicit a warning if the 2173C<use warnings> pragma or the B<-w> 2174command-line switch (the C<$^W> variable) is in effect. 2175 2176The filehandles STDIN, STDOUT, and STDERR are predefined. (The 2177filehandles C<stdin>, C<stdout>, and C<stderr> will also work except 2178in packages, where they would be interpreted as local identifiers 2179rather than global.) Additional filehandles may be created with 2180the open() function, amongst others. See L<perlopentut> and 2181L<perlfunc/open> for details on this. 2182X<stdin> X<stdout> X<sterr> 2183 2184If a <FILEHANDLE> is used in a context that is looking for 2185a list, a list comprising all input lines is returned, one line per 2186list element. It's easy to grow to a rather large data space this 2187way, so use with care. 2188 2189<FILEHANDLE> may also be spelled C<readline(*FILEHANDLE)>. 2190See L<perlfunc/readline>. 2191 2192The null filehandle <> is special: it can be used to emulate the 2193behavior of B<sed> and B<awk>. Input from <> comes either from 2194standard input, or from each file listed on the command line. Here's 2195how it works: the first time <> is evaluated, the @ARGV array is 2196checked, and if it is empty, C<$ARGV[0]> is set to "-", which when opened 2197gives you standard input. The @ARGV array is then processed as a list 2198of filenames. The loop 2199 2200 while (<>) { 2201 ... # code for each line 2202 } 2203 2204is equivalent to the following Perl-like pseudo code: 2205 2206 unshift(@ARGV, '-') unless @ARGV; 2207 while ($ARGV = shift) { 2208 open(ARGV, $ARGV); 2209 while (<ARGV>) { 2210 ... # code for each line 2211 } 2212 } 2213 2214except that it isn't so cumbersome to say, and will actually work. 2215It really does shift the @ARGV array and put the current filename 2216into the $ARGV variable. It also uses filehandle I<ARGV> 2217internally--<> is just a synonym for <ARGV>, which 2218is magical. (The pseudo code above doesn't work because it treats 2219<ARGV> as non-magical.) 2220 2221Since the null filehandle uses the two argument form of L<perlfunc/open> 2222it interprets special characters, so if you have a script like this: 2223 2224 while (<>) { 2225 print; 2226 } 2227 2228and call it with C<perl dangerous.pl 'rm -rfv *|'>, it actually opens a 2229pipe, executes the C<rm> command and reads C<rm>'s output from that pipe. 2230If you want all items in C<@ARGV> to be interpreted as file names, you 2231can use the module C<ARGV::readonly> from CPAN. 2232 2233You can modify @ARGV before the first <> as long as the array ends up 2234containing the list of filenames you really want. Line numbers (C<$.>) 2235continue as though the input were one big happy file. See the example 2236in L<perlfunc/eof> for how to reset line numbers on each file. 2237 2238If you want to set @ARGV to your own list of files, go right ahead. 2239This sets @ARGV to all plain text files if no @ARGV was given: 2240 2241 @ARGV = grep { -f && -T } glob('*') unless @ARGV; 2242 2243You can even set them to pipe commands. For example, this automatically 2244filters compressed arguments through B<gzip>: 2245 2246 @ARGV = map { /\.(gz|Z)$/ ? "gzip -dc < $_ |" : $_ } @ARGV; 2247 2248If you want to pass switches into your script, you can use one of the 2249Getopts modules or put a loop on the front like this: 2250 2251 while ($_ = $ARGV[0], /^-/) { 2252 shift; 2253 last if /^--$/; 2254 if (/^-D(.*)/) { $debug = $1 } 2255 if (/^-v/) { $verbose++ } 2256 # ... # other switches 2257 } 2258 2259 while (<>) { 2260 # ... # code for each line 2261 } 2262 2263The <> symbol will return C<undef> for end-of-file only once. 2264If you call it again after this, it will assume you are processing another 2265@ARGV list, and if you haven't set @ARGV, will read input from STDIN. 2266 2267If what the angle brackets contain is a simple scalar variable (e.g., 2268<$foo>), then that variable contains the name of the 2269filehandle to input from, or its typeglob, or a reference to the 2270same. For example: 2271 2272 $fh = \*STDIN; 2273 $line = <$fh>; 2274 2275If what's within the angle brackets is neither a filehandle nor a simple 2276scalar variable containing a filehandle name, typeglob, or typeglob 2277reference, it is interpreted as a filename pattern to be globbed, and 2278either a list of filenames or the next filename in the list is returned, 2279depending on context. This distinction is determined on syntactic 2280grounds alone. That means C<< <$x> >> is always a readline() from 2281an indirect handle, but C<< <$hash{key}> >> is always a glob(). 2282That's because $x is a simple scalar variable, but C<$hash{key}> is 2283not--it's a hash element. Even C<< <$x > >> (note the extra space) 2284is treated as C<glob("$x ")>, not C<readline($x)>. 2285 2286One level of double-quote interpretation is done first, but you can't 2287say C<< <$foo> >> because that's an indirect filehandle as explained 2288in the previous paragraph. (In older versions of Perl, programmers 2289would insert curly brackets to force interpretation as a filename glob: 2290C<< <${foo}> >>. These days, it's considered cleaner to call the 2291internal function directly as C<glob($foo)>, which is probably the right 2292way to have done it in the first place.) For example: 2293 2294 while (<*.c>) { 2295 chmod 0644, $_; 2296 } 2297 2298is roughly equivalent to: 2299 2300 open(FOO, "echo *.c | tr -s ' \t\r\f' '\\012\\012\\012\\012'|"); 2301 while (<FOO>) { 2302 chomp; 2303 chmod 0644, $_; 2304 } 2305 2306except that the globbing is actually done internally using the standard 2307C<File::Glob> extension. Of course, the shortest way to do the above is: 2308 2309 chmod 0644, <*.c>; 2310 2311A (file)glob evaluates its (embedded) argument only when it is 2312starting a new list. All values must be read before it will start 2313over. In list context, this isn't important because you automatically 2314get them all anyway. However, in scalar context the operator returns 2315the next value each time it's called, or C<undef> when the list has 2316run out. As with filehandle reads, an automatic C<defined> is 2317generated when the glob occurs in the test part of a C<while>, 2318because legal glob returns (e.g. a file called F<0>) would otherwise 2319terminate the loop. Again, C<undef> is returned only once. So if 2320you're expecting a single value from a glob, it is much better to 2321say 2322 2323 ($file) = <blurch*>; 2324 2325than 2326 2327 $file = <blurch*>; 2328 2329because the latter will alternate between returning a filename and 2330returning false. 2331 2332If you're trying to do variable interpolation, it's definitely better 2333to use the glob() function, because the older notation can cause people 2334to become confused with the indirect filehandle notation. 2335 2336 @files = glob("$dir/*.[ch]"); 2337 @files = glob($files[$i]); 2338 2339=head2 Constant Folding 2340X<constant folding> X<folding> 2341 2342Like C, Perl does a certain amount of expression evaluation at 2343compile time whenever it determines that all arguments to an 2344operator are static and have no side effects. In particular, string 2345concatenation happens at compile time between literals that don't do 2346variable substitution. Backslash interpolation also happens at 2347compile time. You can say 2348 2349 'Now is the time for all' . "\n" . 2350 'good men to come to.' 2351 2352and this all reduces to one string internally. Likewise, if 2353you say 2354 2355 foreach $file (@filenames) { 2356 if (-s $file > 5 + 100 * 2**16) { } 2357 } 2358 2359the compiler will precompute the number which that expression 2360represents so that the interpreter won't have to. 2361 2362=head2 No-ops 2363X<no-op> X<nop> 2364 2365Perl doesn't officially have a no-op operator, but the bare constants 2366C<0> and C<1> are special-cased to not produce a warning in a void 2367context, so you can for example safely do 2368 2369 1 while foo(); 2370 2371=head2 Bitwise String Operators 2372X<operator, bitwise, string> 2373 2374Bitstrings of any size may be manipulated by the bitwise operators 2375(C<~ | & ^>). 2376 2377If the operands to a binary bitwise op are strings of different 2378sizes, B<|> and B<^> ops act as though the shorter operand had 2379additional zero bits on the right, while the B<&> op acts as though 2380the longer operand were truncated to the length of the shorter. 2381The granularity for such extension or truncation is one or more 2382bytes. 2383 2384 # ASCII-based examples 2385 print "j p \n" ^ " a h"; # prints "JAPH\n" 2386 print "JA" | " ph\n"; # prints "japh\n" 2387 print "japh\nJunk" & '_____'; # prints "JAPH\n"; 2388 print 'p N$' ^ " E<H\n"; # prints "Perl\n"; 2389 2390If you are intending to manipulate bitstrings, be certain that 2391you're supplying bitstrings: If an operand is a number, that will imply 2392a B<numeric> bitwise operation. You may explicitly show which type of 2393operation you intend by using C<""> or C<0+>, as in the examples below. 2394 2395 $foo = 150 | 105; # yields 255 (0x96 | 0x69 is 0xFF) 2396 $foo = '150' | 105; # yields 255 2397 $foo = 150 | '105'; # yields 255 2398 $foo = '150' | '105'; # yields string '155' (under ASCII) 2399 2400 $baz = 0+$foo & 0+$bar; # both ops explicitly numeric 2401 $biz = "$foo" ^ "$bar"; # both ops explicitly stringy 2402 2403See L<perlfunc/vec> for information on how to manipulate individual bits 2404in a bit vector. 2405 2406=head2 Integer Arithmetic 2407X<integer> 2408 2409By default, Perl assumes that it must do most of its arithmetic in 2410floating point. But by saying 2411 2412 use integer; 2413 2414you may tell the compiler that it's okay to use integer operations 2415(if it feels like it) from here to the end of the enclosing BLOCK. 2416An inner BLOCK may countermand this by saying 2417 2418 no integer; 2419 2420which lasts until the end of that BLOCK. Note that this doesn't 2421mean everything is only an integer, merely that Perl may use integer 2422operations if it is so inclined. For example, even under C<use 2423integer>, if you take the C<sqrt(2)>, you'll still get C<1.4142135623731> 2424or so. 2425 2426Used on numbers, the bitwise operators ("&", "|", "^", "~", "<<", 2427and ">>") always produce integral results. (But see also 2428L<Bitwise String Operators>.) However, C<use integer> still has meaning for 2429them. By default, their results are interpreted as unsigned integers, but 2430if C<use integer> is in effect, their results are interpreted 2431as signed integers. For example, C<~0> usually evaluates to a large 2432integral value. However, C<use integer; ~0> is C<-1> on two's-complement 2433machines. 2434 2435=head2 Floating-point Arithmetic 2436X<floating-point> X<floating point> X<float> X<real> 2437 2438While C<use integer> provides integer-only arithmetic, there is no 2439analogous mechanism to provide automatic rounding or truncation to a 2440certain number of decimal places. For rounding to a certain number 2441of digits, sprintf() or printf() is usually the easiest route. 2442See L<perlfaq4>. 2443 2444Floating-point numbers are only approximations to what a mathematician 2445would call real numbers. There are infinitely more reals than floats, 2446so some corners must be cut. For example: 2447 2448 printf "%.20g\n", 123456789123456789; 2449 # produces 123456789123456784 2450 2451Testing for exact equality of floating-point equality or inequality is 2452not a good idea. Here's a (relatively expensive) work-around to compare 2453whether two floating-point numbers are equal to a particular number of 2454decimal places. See Knuth, volume II, for a more robust treatment of 2455this topic. 2456 2457 sub fp_equal { 2458 my ($X, $Y, $POINTS) = @_; 2459 my ($tX, $tY); 2460 $tX = sprintf("%.${POINTS}g", $X); 2461 $tY = sprintf("%.${POINTS}g", $Y); 2462 return $tX eq $tY; 2463 } 2464 2465The POSIX module (part of the standard perl distribution) implements 2466ceil(), floor(), and other mathematical and trigonometric functions. 2467The Math::Complex module (part of the standard perl distribution) 2468defines mathematical functions that work on both the reals and the 2469imaginary numbers. Math::Complex not as efficient as POSIX, but 2470POSIX can't work with complex numbers. 2471 2472Rounding in financial applications can have serious implications, and 2473the rounding method used should be specified precisely. In these 2474cases, it probably pays not to trust whichever system rounding is 2475being used by Perl, but to instead implement the rounding function you 2476need yourself. 2477 2478=head2 Bigger Numbers 2479X<number, arbitrary precision> 2480 2481The standard Math::BigInt and Math::BigFloat modules provide 2482variable-precision arithmetic and overloaded operators, although 2483they're currently pretty slow. At the cost of some space and 2484considerable speed, they avoid the normal pitfalls associated with 2485limited-precision representations. 2486 2487 use Math::BigInt; 2488 $x = Math::BigInt->new('123456789123456789'); 2489 print $x * $x; 2490 2491 # prints +15241578780673678515622620750190521 2492 2493There are several modules that let you calculate with (bound only by 2494memory and cpu-time) unlimited or fixed precision. There are also 2495some non-standard modules that provide faster implementations via 2496external C libraries. 2497 2498Here is a short, but incomplete summary: 2499 2500 Math::Fraction big, unlimited fractions like 9973 / 12967 2501 Math::String treat string sequences like numbers 2502 Math::FixedPrecision calculate with a fixed precision 2503 Math::Currency for currency calculations 2504 Bit::Vector manipulate bit vectors fast (uses C) 2505 Math::BigIntFast Bit::Vector wrapper for big numbers 2506 Math::Pari provides access to the Pari C library 2507 Math::BigInteger uses an external C library 2508 Math::Cephes uses external Cephes C library (no big numbers) 2509 Math::Cephes::Fraction fractions via the Cephes library 2510 Math::GMP another one using an external C library 2511 2512Choose wisely. 2513 2514=cut 2515