in reply to Splitting multiple commands with regex failure

For splitting the commands, you can split before a ! sign

use strict; use warnings; my $command = '!book this is my test book !number 1222223 !book anothe +r book"'; my @commands = split /(?=!)/, $command;

Then if you want to ignore all but the first command, just use $commands[0]

This leaves trailing spaces in the commands. If you want to remove those too, split on /\s*(?=!)/ instead.