Кодировка - это представление текста в байтах. Например,
ת === UTF-8 ==========> D7 AA
ת === Windows-1255 ===> FA
ת === iso-8859-8 =====> FA
Невозможно сохранить текст в файле без его кодирования, поскольку файлы могут содержать только байты.
Ваш код работает, если $mystring
уже содержит байты (закодированный текст), но вы говорите, что у вас есть "строка Unicode".
Полагаю, вы пришли к выводу, что ваш файл поврежден с помощью
cat file
или аналогичный. В этом случае вы хотите, чтобы файл был закодирован в соответствии с вашей локалью.
use open ':locale';
open my $fh, ">>", "file" or die $!;
print $fh $mystring;