+
+# [perl #102486] Sub calls as the last statement of an lvalue sub
+package _102486 {
+ my $called;
+ my $x = 'nonlv';
+ sub strictlv :lvalue { use strict 'refs'; &$x }
+ sub lv :lvalue { &$x }
+ sub nonlv { ++$called }
+ eval { strictlv };
+ ::like $@, qr/^Can't use string \("nonlv"\) as a subroutine ref while/,
+ 'strict mode applies to sub:lvalue{ &$string }';
+ $called = 0;
+ ::ok eval { lv },
+ 'sub:lvalue{&$x}->() does not die for non-lvalue inner sub call';
+ ::is $called, 1, 'The &$x actually called the sub';
+ eval { +sub :lvalue { &$x }->() = 3 };
+ ::like $@, qr/^Can't modify non-lvalue subroutine call at /,
+ 'sub:lvalue{&$x}->() dies in true lvalue context';
+}