Pracuję nad szkieletem testowym w Perlu. W ramach testów może być konieczne dodanie warunku wstępnego lub testów końcowych dla danego testu, ale niekoniecznie dla wszystkich z nich. Co mam tak daleko jest coś takiego:Jak ustalić, czy funkcja Perl istnieje w środowisku wykonawczym?
eval "&verify_precondition_TEST$n";
print [email protected] if [email protected];
Niestety, ten wyprowadza „Undefined podprogramów & verify_precondition_TEST1 zwane w ...”, jeśli funkcja nie istnieje.
Jak ustalić z góry, czy funkcja istnieje, przed próbą połączenia?
To jest niewłaściwy eval. Chcesz blokować eval, a nie string eval. Poza tym testowanie, czy funkcja istnieje, może być wykonane za pomocą ewaluacji. –
Potrzebuję użyć string eval, ponieważ $ n nie jest znane podczas kompilacji. –
Nie, nie. Musisz użyć symbolicznych odniesień. Zobacz moją odpowiedź na przykład, jak do nich podejść. –