Автор метода уверяет, что все должно работать для любой версии UEFI от Insyde, в принципе, можно ему поверить, наверное,я так думаю, но не уверен. На практике метод проверять не рискну, нет подходящего подопытного, но статья занятная и полезная.
По вашей ошибке:
Вы шаги 1-10 выполнили точно по инструкции? В частности, в шаге 10 написано, что парсить следует файл ROM самого большого размера, с именем, начинающимся с FE3542FE. А судя по вашему скрину, вы пытались безуспешно парсить 2 разных файла, причем в имени второго указанного начала вообще не наблюдается.
Далее, перл ругается на ошибку инициализации значения в 245 строке парсера. Смотрим в код и видим там цикл, по моему предположению, срабатывающий, пока размер файла превышает количество считанных из него данных
Код:
while ($reader < $pkg{size}) # read until we in package
{
my $LANG_PACKAGE_LENGTH = unpack('I', (data($pkg{int_offset} + $reader, 3).pack("H",0)) );
my $LANG_PACKAGE_OFFSET = $pkg{int_offset} + $reader;
#print $LANG_PACKAGE_LENGTH,"\n";
if ($LANG_PACKAGE_LENGTH)
{
$reader += (3 + 1 + 42);
my $LANG_PACKAGE_NAME = (data($pkg{int_offset} + $reader, 5)); # skip 00 - end of header
$languages{$LANG_PACKAGE_NAME} = {'offset' => $LANG_PACKAGE_OFFSET, 'length' => $LANG_PACKAGE_LENGTH, 'name' => $LANG_PACKAGE_NAME };
}
$reader += $LANG_PACKAGE_LENGTH - (3 + 1 + 42);
}
Далее думайте сами, что именно вы сделали не так, как описано в инструкции.
Кроме того, автор метода работал в Ubunte, а у вас Windows. Существует некоторое различие в работе Perl в этих операционных системах. Возможно, это бредовая идея, но попробуйте стартовать с любого LiveCD Linux и проделать все операции в нем.
И да, там в конце статьи есть ссылочка для личных обращений к автору при появлении затруднений у страждущих... Ну, это я как бы между прочим на всякий случай написал, вдруг пригодится кому зайти поругаться со своим "кирпичиком" в руках
.