Вы совершенно правы: NSTask на Cocoa (не Cocoa-Touch) - подходящий класс для вас. Вы можете запустить любой подпроцесс, учитывая, что этот подпроцесс унаследует окружение от вашей основной задачи (но, конечно, вы можете применять другие параметры, например, каталог run).
Преимущество «system ()» в том, что метод «запуска» NSTask не блокирует, поэтому вы можете использовать его для длинных асинхронных заданий (и получать уведомления, когда он закончится).
Для конкретного случая perl, просто запустите скрипт perl, как в командной строке: "/ usr / bin / perl ..."
Наконец, вы можете попробовать PerlObjCBridge (ссылка: PerlObjCBridge.pm man page ) для своего рода межпроцессного взаимодействия между объектами Objective-C и perl.