@data[ @ordered[ 0, -1 ] ] = @data[ @ordered[ -1, 0 ] ]; #### @data.setSlice( items_to_set => [ @ordered.getSlice( 0, @ordered.last ) ], values_to_set => [ @data.getSlice( @ordered.getSlice( @ordered.last, 0 ) ], ); #### ## an empty slice at runtime c:\test>perl -mstrict -wle"my @a='a'..'z'; print @a[ grep $_ == 10, 1..9 ];" ## no output and no errors #### ## an empty slice at compile time c:\test>perl -mstrict -wle"my @a='a'..'z'; print @a[ ];" Scalar value @a[ ] better written as $a[ ] at -e line 1. syntax error at -e line 1, near "[ ]" Execution of -e aborted due to compilation errors. #### ## a slice of one element at runtime c:\test>perl -mstrict -wle"my @a='a'..'z'; print @a[ grep $_ == 5, 1..9 ];" f #### ## a slice of one element at compile time c:\test>perl -mstrict -wle"my @a='a'..'z'; print @a[ 5 ];" Scalar value @a[ 5 ] better written as $a[ 5 ] at -e line 1. f