num=( 16 19 )
text=( test1 test2 )
declare -i index=0
while [ -n "${num[$index]}" ]
do
echo "DEBUG: $index, ${num[$index]}, ${text[$index]}"
sed -i -r "s/^${num[$index]}\./#${num[$index]}/" file
sed -i -r "s/^[^\d#].*${num[$index]}/TEXT:${text[$index]}/" file
index+=1
done
В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от 0 до FFFF16). При этом можно кодировать символы Unicode в диапазонах 000016..D7FF16 и E00016..10FFFF16. Исключенный отсюда диапазон D80016..DFFF16 используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя 16-битными словами.
Перл тут не причем.