#!/usr/bin/perl use v5.24; use warnings; use experimental 'signatures'; say "This is perl $]"; sub f :lvalue ($k) { state $href = {a => 10}; $href->{$k}; } sub g :lvalue ($k) { state $href = {b => 20}; $href->{$k}; } eval q{ (f($_) || g($_))++ for qw(a b); 1; } or warn $@; ${\(f($_) // g($_))}++ for qw(a b); say "f(a) = ", f('a'); say "g(b) = ", g('b'); __DATA__ Can't modify logical or (||) in postincrement (++) at (eval 5) line 2, near ")++" This is perl 5.032001 f(a) = 11 g(b) = 21