$ perl -Mstrict -Mwarnings -E' my $foo; say (defined $foo ? "1: defined" : "1: not defined"); my $bar = $foo; say "2: bar: $bar"; my $baz = $foo || "baz"; say "3: baz: $baz"; my $qux = $foo // "qux"; say "4: qux: $qux"; ' 1: not defined Use of uninitialized value $bar in concatenation (.) or string at -e line 5. 2: bar: 3: baz: baz 4: qux: qux