As of commit
f4df43b5, lock is parsed the same way as tied. Before
that, the prototype was effectively \[$@%&*], but only because
it was buggy (an lvalue sub itself would be passed to the function,
instead of its return value). Yet its prototype was set to \$, which
was just wrong.
This fixes part of #94980.
longer tries to return the sub as a scalar, resulting in strange side
effects like C<ref \$_> returning "CODE" in some instances.
+=item *
+
+C<lock>'s prototype has been corrected to C<(\[$@%*])> from C<(\$)>, which
+was just wrong.
+
=back
=head1 Known Problems
case KEY_splice:
ret = newSVpvs_flags("+;$$@", SVs_TEMP);
goto set;
- case KEY_tied: case KEY_untie:
+ case KEY_lock: case KEY_tied: case KEY_untie:
ret = newSVpvs_flags("\\[$@%*]", SVs_TEMP);
goto set;
case KEY_tie:
listen (*$)
local undef
localtime (;$)
-lock (\$)
+lock (\[$@%*])
log (_)
lstat (*)
lt undef