Итак, чтобы решить старый вопрос, я только что решил / решил эту проблему.
Как говорит MisterEd, вам нужна библиотека GNU readline.Однако, когда вы делаете Term::Readline::Gnu
, вам также нужно убедиться, что архитектура библиотеки readline GNU совместима с вашей архитектурой perl, потому что perl компилирует свои модули, используя ключи компилятора, с которыми он был скомпилирован.
InOS X, если вы установите альтернативный perl с использованием порта или fink, вы получите двоичный файл perl, скомпилированный только для вашей архитектуры (i386 ИЛИ x86_64).В этом случае ответ MisterEd: «Хорошо».
Однако, как видно из приведенного выше вывода, спрашивающий использует Perl, скомпилированный как универсальный двоичный файл (-arch i386 -arch x86_64) -наверное системный по умолчанию Perl.В моем случае я использовал perlbrew для создания более новой версии perl, но мне нужно было, чтобы он был универсальным, чтобы я мог отправлять вещи на другие машины OS X, поэтому я проделал некоторую работу по созданию универсальной сборки.
В этих случаях вам нужно скомпилировать библиотеку Gnu Readline вручную с некоторыми дополнительными переключателями.Я сделал это:
GNU readline:
./configure CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" \
LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" ./configure \
--prefix=/usr/local; make
По какой-то причине make потерпел неудачу на одном из последних этапов создания общей библиотеки .dylib, но на тот момент она уже была собранаlibreadline.a, который я скопировал в /usr/local/lib.
Term :: Readline :: Gnu:
Затем я скачал .tar.gz для Term :: Readline ::Гну и сделал:
perl Makefile.PL --libdir='/usr/local/lib'; make; make install