How are you controlling the firewall? The System Preferences object is just a front end to ipfw, so to get really fine-grained control of the firewall I've found it's easier just to use the command line. But when you're using the command line, the System Preferences pane will complain that you're using "other firewall software," so it seems you'll have to choose fine-grained control or a GUI control.
The standard ports for FTP are both 20 and 21 (one for data, one for commands). You can see a list of the standard port numbers and protocols in the file /etc/services (which is a duplicate of this online file).
In regards to the Perl script, what functions does it handle? Are you just uploading/downloading, or are you attempting to handle incoming FTP requests as well?