Dlaczego w moim kodzie Perla otrzymuję „zbyt wczesne wezwanie do sprawdzenia prototypu”?

Mam taki plik Perla:

use strict;
f1();

sub f3()
{ f2(); }

sub f1()
{}
sub f2()
{}

W skrócie,f1 jest wywoływany przed zdefiniowaniem. Perl zgłasza ostrzeżenie: „f1 nazywany zbyt wcześnie, aby sprawdzić prototyp”. Ale tak jest w przypadkuf2, jedyna różnica polega na tym, że jest wywoływana z innego podprogramu. Nie oznacza to ostrzeżeniaf2. Czemu?

Jaki jest najlepszy sposób rozwiązania tego problemu?

zadeklaruj podprogram zanim zostanie wywołanyzadzwoń do subskrypcji w ten sposób:&f1();

questionAnswers(5)

yourAnswerToTheQuestion