Since it's not a problem for syntax that can be recognized at compile time, your slice above might be allowed if you "declare" the thunks with curlies:
@3d_slice = @array[ {!($_ % 2)}; 0..9:3; {?test($_)} ];
How does the compiler know that those ';'s within curlies are List-of-lists separators, and not statement-separators?
That looks a lot like normal closure/code-block where ; just separates different statements.
-- Markus Laire <Jam. 1:5-6>