У меня работает (Windows 10, Strawberry Perl 5.30) при печати содержимого в окне командной строки Windows и использовании кодировки STDOUT cp437
:
use feature qw(say);
use strict;
use warnings;
use Win32::OLE;
use open ':std', ':encoding(cp437)';
# get reference to Excel, Active Window, Active Sheet
my $excel = Win32::OLE->GetActiveObject('Excel.Application');
my $book = $excel -> ActiveWindow;
my $sheet = $book -> ActiveSheet();
my $text = $sheet->Cells(1, 1)->{Value};
say $text;
Вывод :
äöü
Редактировать :
Как отмечает @ikegami, вы должны определять кодовую страницу вывода консоли программно (вместо жесткого кодирования значение cp437
как я) вроде этого:
use Win32;
my $coe = "cp" . Win32::GetConsoleOutputCP();
binmode STDOUT, "encoding($coe)";
См. также этот пост для получения дополнительной информации.