in reply to UTF-8 strings and the bytes pragma

They are different, I used Devel::Peek to check:
use Devel::Peek; # ... Dump $s1; Dump $s2; __END__ SV = PV(0x60003a520) at 0x600078300 REFCNT = 1 FLAGS = (PADMY,POK,pPOK,UTF8) PV = 0x600069210 "m\303\270\303\270se"\0 [UTF8 "m\x{f8}\x{f8}se"] CUR = 7 LEN = 16 SV = PV(0x60003a470) at 0x6000e2960 REFCNT = 1 FLAGS = (PADMY,POK,pPOK) PV = 0x60016e4d0 "m\370\370se"\0 CUR = 5 LEN = 16

Another way how to check the difference is to use is_utf8() from Encode. Read about the UTF8 flag in the documentation.

use Encode qw{ is_utf8 }; # ... say 'Same UTF8 flag: ', is_utf8($s1) == is_utf8($s2);
لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ