#!/usr/local/bin/perl use strict; use warnings; use Data::Dumper; my @array = ('A','B','C','[','D',']','E','F'); my @results = ( ); while (@array) { my $string = shift @array; if ($string eq '[' and @array > 2) { $string .= (join "", splice(@array, 0, 2)); } push @results, $string; } printf "Results => %s\n", Dumper(\@results);