The main thing is that you're using prototypes. Generally prototypes aren't needed, aren't used and can be harmful unless you're very careful. If you define test2 as
sub test2 { print "test2: Working\n"; }
you'll find you're able to call it before it's defined, without getting a warning.

In reply to Re^2: Calling Functions by eclpmb
in thread Calling Functions by AcidHawk

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":