#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my $aref = [6, 1, 7, 6, 2, 2, 7, 1, 6, 99, 99, 7, 88, 7, 6, 1, 2, 3]; my (@temp, @result); my $flag = 0; for my $num (@$aref) { $flag = 1 if $num == 6; if ($flag) { push @temp, $num; } else { push @result, $num; } if ($num == 7) { @temp = (); $flag = 0; } } push @result, @temp; print Dumper \@result;