use strict; use warnings; foo('bar'); BEGIN{ sub foo ($){ print "foo called: @_\n"; } } # gives warning message: # main::foo() called too early to check prototype ... #### use strict; use warnings; sub foo ($); foo('bar'); sub foo ($){ print "foo called: @_\n"; }