use strict; use warnings; use Data::Dumper; my @arr = qw/ ! my name ! is ! Achint ! I need ! help ! /; my @out = ( [] ); for( @arr ) { if( /^!$/ ) { push @out, []; } else { push @{ $out[-1] }, $_; } } print Dumper \@out;