use warnings; use strict; use Data::Dumper; gf(); gf(); sub gf { my $ins1 = '4 A -4 C -4 B 1 D'; my @inserts; print "\nat the beginning: " . \@inserts . "\n"; print $ins1, "\n"; $ins1 =~ /[\d+-]+(?: \w ([\d+-]+)(?{print \@inserts, "\n"; push @inserts, $1}))*/g; print "\n" . join ' ', @inserts; }