я так понял что кроме цифр, точке и пробелов больше ничего присутствовать в строке не должно. но ни первый ни второй вариант не работают со строкой "99.11 2aaa0 21" (оба выдают 'Это какая надо строка').
так что думаю всетаки правильней будет:
perl -e '$_="99.11 22.0aaaa0 21"; $test=(/\.+/ && /\d+/ && / +/ && !/[^\.\d ]/)?"ok":"err"; print $test;'