Как я могу заставить ActivePerl играть приятно с экраном cygwin?

Я хотел бы использовать cygwin инструменты (экран) для отладчика ActiveState Perl разработки и вызова от cygwin бросков среды следующая ошибка.

bash-3.2$ perl -d test.pl
The system cannot find the path specified.
Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. The resiz
e program didn't work. at F:/Perl/lib/Term/ReadKey.pm line 362.
Compilation failed in require at F:/Perl/lib/Term/ReadLine/Perl.pm line 64.
 at F:/Perl/lib/Term/ReadLine/Perl.pm line 64
        Term::ReadLine::Perl::new('Term::ReadLine', 'perldb', 'GLOB(0x18e2e0c)', 'GLOB(0x1883e14)') called at F:/Perl/lib/perl5db.pl line 6073
        DB::setterm called at F:/Perl/lib/perl5db.pl line 2237
        DB::DB called at testReliance1.pl line 2
Attempt to reload Term/ReadLine/readline.pm aborted.
Compilation failed in require at F:/Perl/lib/Term/ReadLine/Perl.pm line 64.
END failed--call queue aborted at testReliance1.pl line 64.
 at testReliance1.pl line 64
bash-3.2$

Я не мог найти обходное решение для этого.
Попробованный для использования cygwin жемчуга distrubution, но модулей жемчуга компиляции под cpan кошмар для меня, поскольку большинство из них не скомпилирует и не имеет всестороннего знания для фиксации ошибок компилятора.

Обеспечение поддельного терминала для отладчика может работать, но никакая идея о выполнимости и как продолжить двигаться.
Предложите, если существует какое-либо обходное решение для этого.

6
задан brian d foy 23 January 2010 в 18:14
поделиться

4 ответа

От раздела «Окружающая среда» термина :: Документация для чтения :

Переменная среды PERL_RL регулируется, какие заряжены Clone Clone. Если значение ложно, используется фиктивный интерфейс.

Как обходной путь, пока не сортируется несовместимость, вы можете отключить термин :: readline с

bash$ PERL_RL=0 perl -d test.pl
1
ответ дан 17 December 2019 в 18:16
поделиться

Попробуйте выполнить эту команду перед запуском Perl:

export COLUMNS LINES
0
ответ дан 17 December 2019 в 18:16
поделиться

Мне кажется, у вас много проблем. ActiveState Perl - это попытка переноса Perl на Windows с двоичным распределением и контролем версий для модулей, этот подход умирает. Успех клубничного перла и мой личный опыт заставляют меня думать, что вы просто используете не тот продукт.

Я использую исключительно клубнику, и количество проблем, с которыми я столкнулся после миграции, я могу сосчитать по пальцам. Я очень счастлив, что перешел из ActiveState. Я бы посоветовал вам тоже попробовать. Strawberry поставляется со средой mingw - он даже скомпилирует для вас XS-модули и откроет вам подлинный CPAN.

(это совершенно нестандартный ответ, но я вполне уверен, что использовал bin-файл соломенного perl в cygwin, и он сработал)

Решение - используйте Cygwins Term ReadKey

По сути, вам просто нужен Cygwin Term :: ReadKey , чтобы занять более высокое место в иерархии вашей библиотеки, поэтому он используется.

  1. Создайте каталог D:\ foo_lib
  2. Скопируйте термин Term / ReadKey каталог из вашего cygwins / usr / lib / perl в D: \ foo_lib
  3. Скопируйте Term / ReadKey.pm в D: \ foo_lib \ Term \
  4. prepend PERL5LIB = " D: \ foo_lib "в вашу среду для StrawBerry perl.

или.


Запустите это от Cygwin.

perl -MTerm::ReadKey -E"say Term::ReadKey::termsizeoptions()"

Каким бы ни было это значение, отредактируйте Term / ReadKey.pm из своей установки Strawberry, взломайте его там, установите переменную

  1. my $ termoption = value_you_got сверху
  2. замените & termsizeoptions () , с вариантом $
1
ответ дан 17 December 2019 в 18:16
поделиться

Помните, что консоль Windows предоставляет совсем другую среду, чем ваша обычная консоль * nix. В общем, приложения Windows, которые хотят взаимодействовать с консолью, не будут работать в консолях Cygwin (например, MinTTY, XTerm, Screen), потому что они обеспечивают только эмуляцию PTY.

Энди Коппе, автор MinTTY , написал небольшую программу под названием conin , позволяющую программам Windows читать так, как если бы это было с консоли, но полная поддержка вывода по-прежнему считается невозможной.

1
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: