EXPR1 // EXPR2
эквивалентно
defined(EXPR1) ? EXPR1 : EXPR2
, за исключением того, что EXPR1
оценивается только один раз.
my $var = $values[1] // $values[2];
$var = 0 if $var eq '-';
, вероятно, яснее, чем
my $var = ($values[0] // $values[1]) eq '-' ? 0 : ($values[0] // $values[1]);