Looks cool, some brief comments:
in reply to Peer review of Cisco switch administration utility (was: ok I know it's crap but I'm proud of it...)
You may want to use Getopt::Long and pod2usage to get your arguments, and print errors if insufficient args (perldoc getopt::long). I like to assign args to my variables early rather than passing ARGV around - it makes it easier to work out what parameters a subroutine is using.
Consider validating the IP addresses after you get parameters, drop a warning message then and only feedip the valid ones. This reduces the nesting.