All over, you are instructing Perl to ignore prototypes. Why do you use & on your subroutine calls?