Table 3.1. ????????????
| ?????? | ???? |
| < | ?? |
| > | ???? |
| == | ???? |
| <= | ????? |
| >= | ??????? |
| != | ?????? |
| <=> | ???????? 1, 0, or -1 |
??????<=>??????
0 - ????????
1 - ????????
1 - ????????
?????????????????
Table 3.2. ?????????????
| ?????? | ???? | ?? |
| lt | ?? | ?? |
| gt | ???? | ?? |
| eq | ???? | ?? |
| le | ????? | ?? |
| ge | ??????? | ?? |
| ne | ?????? | ?? |
| cmp | ???????? 1, 0, or -1 | ?? |
????????????
?????$a || $b ?? $a or $b
?????$a && $b ?? $a and $b
??????! $a ?? not $a
??????$a xor $b
?]??????
??&
??|
???~
???^
?????$x << 1
?????$x >> 2
????????&??????????????PERL??????????????????????
?????????????
Table 3.3. ?????????
| ?????? | ???? |
| = | Assignment only |
| += | Addition and assignment |
| -= | Subtraction and assignment |
| *= | Multiplication and assignment |
| /= | Division and assignment |
| %= | Remainder and assignment |
| **= | Exponentiation and assignment |
| &= | Bitwise AND and assignment |
| |= | Bitwise OR and assignment |
| ^= | Bitwise XOR and assignment |
Table 3.4. ?????????????
| ???? | ?????? |
| $a = 1; | none (basic assignment) |
| $a -= 1; | $a = $a - 1; |
| $a *= 2; | $a = $a * 2; |
| $a /= 2; | $a = $a / 2; |
| $a %= 2; | $a = $a % 2; |
| $a **= 2; | $a = $a ** 2; |
| $a &= 2; | $a = $a & 2; |
| $a |= 2; | $a = $a | 2; |
| $a ^= 2; | $a = $a ^ 2; |
.=????????????????????
$value1 = $value2 = "a string";
.=????????
($a = $b) += 3;
?????
$a = $b;
$a += 3;
?????????????????
????????????????
??++??--(??C++???????)
.??????????????????????????++$var-- # error
.????????????/?????????????????????$var2
= $var1 + ++$var1; # error
.??PERL??++???????????????????????'z'??'Z'??'9'??????
$stringvar = "abc";
$stringvar++; # $stringvar contains "abd"
now
$stringvar = "aBC";
$stringvar++; # $stringvar contains "aBD"
now
$stringvar = "abz";
$stringvar++; # $stringvar now contains
"aca"
$stringvar = "AGZZZ";
$stringvar++; # $stringvar now contains
"AHAAA"
$stringvar = "ab4";
$stringvar++; # $stringvar now contains
"ab5"
$stringvar = "bc999";
$stringvar++; # $stringvar now contains
"bd000"
.??????--??PERL??????????????????????????
$stringvar = "abc";
$stringvar--; # $stringvar = -1 now
.?????????????????????????????????????????????++??????????????????????1???
$stringvar = "ab*c";
$stringvar++;
$stringvar = "ab5c";
$stringvar++;
??????????????????????
????: .
?????x
????????(????+=)?? .=
????
$newstring = "potato" . "head";
$newstring = "t" x 5;
$a = "be";
$a .= "witched"; # $a is now
"bewitched"
????????????
???????????????????
$var1 += 1, $var2 = $var1;
?????
$var1 += 1;
$var2 = $var1;
????????????????????????????????????????????????????????
$val = 26;
$result = (++$val, $val + 5); # $result = 32
?????????????????????I???
$val = 26;
$result = ++$val, $val + 5; # $result = 27
?????????????
??C?????????????1:?2??????????????1????????2???
$result = $var == 0 ? 14 : 7;
$result = 43 + ($divisor == 0 ? 0 : $dividend /
$divisor);
PERL 5?????????????????????????????????????????????
$condvar == 43 ? $var1 : $var2 = 14;
$condvar == 43 ? $var1 = 14 : $var2 = 14;
???????????????
Table 3.6. ??????????
| ?????? | ???? |
| ++, -- | ????????? |
| -, ~, ! | ??? |
| ** | ??? |
| =~, !~ | ????? |
| *, /, %, x | ????????????? |
| +, -, . | ??????????? |
| <<, >> | ?? |
| -e, -r, etc. | ????? |
| <, <=, >, >=, lt, le, gt, ge | ?????? |
| ==, !=, <=>, eq, ne, cmp | ????? |
| & | ?? |
| |, ^ | ????? |
| && | ????? |
| || | ????? |
| .. | ??? |
| ? and : | ?????????? |
| =, +=, -=, *=, | ??? |
| and so on | ?? |
| , | ????????? |
| not | Low-precedence logical NOT |
| and | Low-precedence logical AND |
| or, xor | Low-precedence logical OR and XOR |
.???????????(associativity)??
Table 3.7. ???????????
| ?????? | ????? |
| ++, -- | ?? |
| -, ~, ! | Right-to-left |
| ** | Right-to-left |
| =~, !~ | Left-to-right |
| *, /, %, x | Left-to-right |
| +, -, . | Left-to-right |
| <<, >> | Left-to-right |
| -e, -r, | ?? |
| <, <=, >, >=, lt, le, gt, ge | Left-to-right |
| ==, !=, <=>, eq, ne, cmp | Left-to-right |
| & | Left-to-right |
| |, ^ | Left-to-right |
| && | Left-to-right |
| || | Left-to-right |
| .. | Left-to-right |
| ? and : | Right-to-left |
| =, +=, -=, *=, | Right-to-left |
| and so on | ?? |
| , | Left-to-right |
| not | Left-to-right |
| and | Left-to-right |
| or, xor | Left-to-right |
???
1???????????????????????????????????????????
2?????????????????????????