in reply to split keywords
Or do you want to preserve the original separator in your output?use strict; my $input = "keyword1, keyword2; keyword3— keyword4 – key +word5"; my $output = "<keyword>" . join ("</keyword>, <keyword>", split /\s*(? +:,|;|\—|–)\s*/, $input) . "</keyword>"; print $output;
Alternative inspired by bart:use strict; use warnings; my $output = ""; my $input = "keyword1, keyword2; keyword3— keyword4 – key +word5"; my @data = split /\s*(,|;|\—|–)\s*/, $input; for (my $i=0; $i<=$#data; $i+=2) { $output .= "<keyword>" . $data[$i] . "</keyword>" . ($data[$i+1] ? + $data[$i+1] : ""); } print $output;
while( my($val, $sep) = splice @data, 0, 2 ) { $sep = "" unless $sep; $output .= "<keyword>$val</keyword>$sep"; }
|
|---|