use strict; my @subjects=("camel, flea, humbug, hubris", "Camel, Flea, Humbug & Hubris","CAMEL, FLEA, HUMBUG and HUBRIS"); for (@subjects) { my @elements=split /\s*,\s*/; push @elements, split /\s+&\s+/, pop(@elements); push @elements, split /\s+and\s+/, pop(@elements); print join "\n", @elements; }