in reply to Are there corner cases I am missing

How about this:

... @all = split(/\./, $mystring); dosumption(@all);

Assuming your script handling of "0" and "" as if it was undef was an accident