A pushmark doesn’t have to have a sibling:
$ ./perl -Ilib -MO=Concise -e '()[()]'
6 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
5 <2> lslice vK/2 ->6
- <1> ex-list lK ->4
3 <0> pushmark s ->4
- <0> stub lP ->-
- <1> ex-list lK ->5
4 <0> pushmark s ->5 <-- look here!
-e syntax OK
my($op, $cx) = @_;
my($expr, @exprs);
my $kid = $op->first->sibling; # skip pushmark
+ return '' if class($kid) eq 'NULL';
my $lop;
my $local = "either"; # could be local(...), my(...), state(...) or our(...)
for ($lop = $kid; !null($lop); $lop = $lop->sibling) {
# ${#} interpolated (the first line magically disables the warning)
() = *#;
() = "${#}a";
+####
+# ()[...]
+my(@a) = ()[()];