$ perl -E ' my @x = (5,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,5,9,8,5,7,5,5,5); say "|@$_|" for map [@x[$_+1 .. $_+($#x-$_ >= 3 ? 3 : $#x-$_)]], grep $x[$_] == 5, 0..$#x; ' |1 2 3| |6 7 8| |4 3 2| |9 8 5| |7 5 5| |5 5| |5| || #### $ perl -E ' my @x = (5,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,5,9,8,5,7,5,5,5); say "|@$_|" for map [@x[$_+1 .. $_+3]], grep $x[$_] == 5, 0..$#x-3; ' |1 2 3| |6 7 8| |4 3 2| |9 8 5| |7 5 5|