For more information on how operators work, consult the perlop documentation bundled with Perl.
Perl has the basic five arithmetic operators:
Addition
Subtraction
Multiplication
Division
Exponentiation
These operators work on both integers and floating-point values (and may give you unexpected results if you apply them to strings, as well).
Perl also has a modulus
operator, which computes the remainder of two
integers:
% modulus
For
example, 17 % 3
is 2, because 2 is left over
when you divide 3 into 17.
Perl also has autoincrement and autodecrement operators:
++ add one -- subtract one
Unlike
the previous six operators, these change a variable's value. $x++
adds one to $x
, changing 4 to 5 (or 'a' to 'b').
All scalars, whether numbers or strings, are represented as sequences of individual bits "under the hood." Every once in a while, you need to manipulate those bits, and Perl provides five operators to help:
Two strings may be concatenated—joined together end to end—with the dot operator:
'This is a ' . 'joined string'
This results in the value 'This
is
a
joined
string'
.
A string may be repeated with the x
operator:
print "Hear ye! " x 3;
This prints out:
Hear ye! Hear ye! Hear ye!
File test
operators are unary operators that test files for certain
characteristics, such as -e $file
, which
returns true
if the file $file exists. Table B-2 lists some available
file test operators.
Table B-2. File test operators
Operator |
Meaning |
---|---|
-r |
File is readable |
-w |
File is writable |
-x |
File is executable |
-o |
File is owned by "you" |
-e |
File exists |
-z |
File has zero size in bytes |
-s |
File has nonzero size (returns size in bytes) |
-f |
File is a plain file |
-d |
File is a directory (a.k.a. folder) |
-l |
File is a symbolic link |
-t |
Filehandle is opened to a terminal |
-T |
File is a text file |
-B |
File is a binary file |
-M |
Age of file (at startup of program) in days since modification |
-A |
Age of file (at startup of program) in days since last access |
-C |
Age of file (at startup of program) in days since last inode change |