литералы в 1251 — это внешнее представление. перед вызовом utf8ToBytes надо его во внутреннее перевести, тогда там встанет флаг ютф8 и функция верно отработает. внутреннее делается через вызов декод: decode("cp1251", $str). о том, что у тебя данные в этом представлении можешь знать только ты, для перла они просто набор байт во внешнем представлении