@A = (1,2,3,4,5,7,21,55,66); $B = RangeRestriction( \@A, [2..4] ); warn $B->(0) ; warn $A[2] ; warn $B->(0) == $A[2] ; sub RangeRestriction { my ( $array, $range ) = @_; return sub { my($index) = @_; $index = $range->[ $index ]; return $array->[ $index ]; }; } __END__ 3 at - line 3. 3 at - line 4. 1 at - line 5.