What is //= in Perl?

perl

Solution

The `//=` operator is the assignment operator version of the `//` or 'logical defined-or' operator.

In the context of a `my` variable declaration, the variable is initially undefined so it is equivalent to assignment (and would be better written as `my $i = '08';`). In general, though,

$i //= '08';

is a shorthand for:

$i = (defined $i) ? $i : '08';

It is documented in the Perl operators (`perldoc perlop`) in two places (tersely under the assignment operators section, and in full in the section on 'logical defined-or'). It was added in Perl 5.10.0.

Problem

I found an example of some Perl code I needed, but it had something in it that I didn't recognise. ``` my $i //= '08'; ``` I can't find any reference to this anywhere! It appears to be the same as: ``` my $i = '08'; ``` Am I missing something?

Original source