use strict; use warnings; my $output = ""; my $input = "keyword1, keyword2; keyword3— keyword4 – keyword5"; my @data = split /\s*(,|;|\—|–)\s*/, $input; for (my $i=0; $i<=$#data; $i+=2) { $output .= "" . $data[$i] . "" . ($data[$i+1] ? $data[$i+1] : ""); } print $output;