use strict; use warnings; use 5.012; my $command = '8M5I4D5M'; my $input = 'M234567MI234IM234M'; while ($command =~ m/(\d+)([MID])/g) { my $value = $1; my $code = $2; given($code) { when ('D') { print 'X' x $value; } when ('I') { $input = substr($input, $value); } when ('M') { print substr($input, 0, $value); $input = substr($input, $value); } } }