Я копаюсь в 7900+ строках perl-кода. Мне нужно было изменить несколько вещей, и все шло довольно хорошо, хотя я всего лишь 36 часов в Perl. Я выучил основные конструкции языка и смог сделать небольшие вещи. Но вдруг я нашел вызов функции, который нигде не имеет определения. Я grep'ed несколько раз, чтобы проверить все «sub». Я не смог найти определение функции. Что мне не хватает? Где находится определение этой функции. Я совершенно уверен, что это пользовательская функция, а не библиотечная функция (по ее названию я догадался).
Пожалуйста, помогите мне найти определение этой функции.
Вот несколько строк об использовании функции.
(cfg_machine_isActive($ep)) {
staf_var_set($ep, VAR_PHASE, PHASE_PREP);
staf_var_set($ep, VAR_PREP, STATE_RUNNING);
} else {
cfg_machine_set_state($ep, STATE_FAILED);
}
}
$rc = rvt_deploy_library(); #this is the function that is the problem
dump_states() unless ($rc != 0);
Вот ответ:
(я не мог опубликовать этот ответ сам, потому что у меня недостаточно репутации)
Я обнаружил, что самый быстрый способ найти определение импортированной функции в perl - это следующие команды:
>perl.exe -d <filename>.pl
Это запускает отладчик.
Затем; сделать
b <name of the function/subroutine who's definition you are looking for>
в нашем случае это будет означать:
b rvt_deploy_library
затем нажмите «c», чтобы перейти к упомянутой функции / подпрограмме.
Это приводит отладчик к требуемой функции. Теперь вы можете увидеть строку №. и расположение функции / подпрограммы на консоли.
main::rvt_deploy_library(D:/CAT/rvt/lib/rvt.pm:60):