in reply to splitting headache

My rule of thumb is that whenever it is easier to talk about what you want to keep than what you want to throw away, use m//g instead of split. You want to keep the contents of a quoted string, or a non-dot string. So say it that way:
$_ = "'Pugh.Pugh'.Barney.McGrew.Cuthbert.Dibble.Grub"; my @keepers = grep defined $_, /'(.*?)'|([^.]+)/g; print map "<$_>\n", @keepers;
The grep defined is in there because on every hit, we'll get $1 as the quoted string but $2 undef, or $2 as the non-dotted string but $1 undef, and all we have to do is toss the undefs to get the final result.

-- Randal L. Schwartz, Perl hacker