Ситуация была такая получал я некие данные в кодировке utf8, сохранял в файл, читал и оказывались они не понять в какой кодировке — length возвращал длину строк в байтах а не в символах.
Решение оказалось несложным:
вместо open (FIL, "/file.foo");
надо написать open (FIL, "< :utf8", "/file.foo");
Ну и если вы уверены в кодировке файла - лучше смело её указать!
Ну и как оказалось желательно в файл скрипта добавить следующие прагма:
use utf8;
use encoding 'utf8';