Работа с регистром букв - не та задача, которая решается регулярными выражениями. Иначе вам придется всю таблицу соответствия писать. Регулярками тут можно выбирать подстроки, а конвертить в uppercase - через uc
use utf8;
my @a = (
"Название HP MODEL описание",
"название описание",
"Название HP"
);
for my $str (@a) {
$str = ucfirst(lc($str));
$str =~ s/\b([a-zA-Z])/uc($1)/eg;
}