Scalar variables are assigned scalar values with an assignment operator (the equals sign) in an assignment statement:

$thousand = 1000;

assigns the integer 1000, a scalar value, to the scalar variable
`$thousand`.

The assignment statement looks like an equal sign from elementary
mathematics, but its meaning is different. The assignment statement
is an instruction, not an assertion. It doesn't mean
"`$thousand` equals
1000." It means "store the scalar
value 1000 into the scalar variable
`$thousand`". However, after the
statement, the value of the scalar variable
`$thousand` is, indeed, equal to 1000.

References are usually saved in scalar variables. For example:

$pi = \3.14159265;

If you try to print `$pi` after this assignment, you
get an indication that it's a reference to a scalar
value at a memory location represented in hexadecimal digits. To
print the value of a variable that's a reference to
a scalar, precede its name with an additional dollar sign:

print $pi,"\n"; print $$pi, "\n";

This gives the output:

SCALAR(0x811d1bc) 3.14159265

You can assign values to several scalar variables by surrounding variables and values in parentheses and separating them by commas, thus making lists:

($one, $two, $three) = ( 1, 2, 3);

There are several
assignment operators besides
`=` that are shorthand for longer expressions. For
instance, `$a += $b` is equivalent to `$a =
$a + $b`. Table A-1 is a complete list.

Example of operator |
Equivalent | |
---|---|---|

$a += $b |
$a = $a + $b |
(addition) |

$a -= $b |
$a = $a - $b |
(subtraction) |

$a *= $b |
$a = $a * $b |
(multiplication) |

$a /= $b |
$a = $a / $b |
(division) |

$a **= $b |
$a = $a ** $b |
(exponentiation) |

$a %= $b |
$a = $a % $b |
(remainder of $a / $b) |

$a x= $b |
$a = $a x $b |
(string $a repeated $b times) |

$a &= $b |
$a = $a & $b |
(bitwise AND) |

$a |= $b |
$a = $a | $b |
(bitwise OR) |

$a ^= $b |
$a = $a ^ $b |
(bitwise XOR) |

$a >>= $b |
$a = $a >> $b |
($a shift $b bits) |

$a <<= $b |
$a = $a >> $b |
($a shift $b bits to left) |

$a &&= $b |
$a = $a && $b |
(logical AND) |

$a ||= $b |
$a = $a || $b |
(logical OR) |

$a .= $b |
$a = $a . $b |
(append string $b to $a) |