«Лучший» язык довольно субъективен. Считается, что Python легко изучается и легко читается, тогда как Perl часто в шутку называют языком «только для записи». С другой стороны, Perl широко используется для управления сетью. Python, как правило, больше используется для управления системой или программирования в целом. У обоих есть области превосходства, и области, где они не работают также.
Любой язык позволит вам решить вашу проблему довольно легко. Оба они имеют все необходимые модули в виде связанных библиотек или легко доступны.
Если бы я использовал Python, я бы использовал ConfigParser
http://docs.python.org/library/configparser.html#module-ConfigParser
для сохранения настроек для каждого проекта, ftplib:
http://docs.python.org/library/ftplib.html
для связи с ftp-сервером и одной из множества библиотек баз данных. Например, если вы используете postgres:
http://www.pygresql.org/
Наконец, для опций командной строки я бы использовал отличный модуль парсера опций, который поставляется с Python:
http://docs.python.org/library/optparse.html#module-optparse
С точки зрения кода у меня были бы следующие объекты:
# Reads in a config file, decides which feed to use, and passes
# the commands in to one of the classes below for import and export
class FeedManager
# Get data from db into a canonical format
class DbImport
# Put data into db from a canonical format
class DbExport
# Get data from ftp into a canonical format
class FtpImport
# Put data into ftp from canonical format
class FtpExport
каждый класс переводится в / из канонического формата, который может быть передан одному из других дополнительных классов.
Файл конфигурации может выглядеть следующим образом:
[GetVitalStats]
SourceUrl=ftp.myhost.com
SourceType=FTP
Destination=Host=mydbserver; Database=somedb
SourceType=Postgres
И, наконец, вы бы назвали это так:
process_feed.py --feed=GetVitalStats