Coming from a C++ background, I religiously use the use strict and use warnings features of Perl:
#!/usr/bin/perl -w
use strict;
us
Perl cannot possibly know at compile time that there won't be a sub to call once the sub call is reached, so -c cannot possibly tell you that.
perlcritic is a tool designed to scan Perl code and guess at possible problems like this one. The Perl::Critic::StricterSubs perlcritic rule checks for this problem.