16

I used to use Active Perl on my Mac OS X (v 10.7.5) and then I switched to the one provided via mac ports (v 5.12.4).

Now when I run the CPAN client or the perl debugger, I cannot access the history using ArrowUp and ArrowDown, what is shown at the prompt is ^[[A and ^[[B respectively.

At least on the debugger the history works, I can access past commands via !num.

Randall
  • 2,859
  • 1
  • 21
  • 24
agaved
  • 258
  • 2
  • 9

7 Answers7

39

By default the only Term::ReadLine handler you get is Term::ReadLine::Perl which is quite simple and doesn't understand things like arrow keys. You probably want to install Term::ReadLine::Gnu.

LeoNerd
  • 8,344
  • 1
  • 29
  • 36
  • 1
    Thanks, it worked like a charm! I cannot upvote your answer because I don't have enough points, but I surely will! – agaved Dec 09 '12 at 11:51
  • 4
    On Ubuntu 14.04, `cpanm Term::ReadLine::Gnu` failed initially. Had to run `sudo apt-get install libncurses5-dev libreadline6-dev` first. – Håkon Hægland Sep 25 '14 at 21:09
  • This worked for me in OS X 10.9.5 with a perlbrewed 5.18.4. Thank you! – msouth Sep 30 '16 at 01:31
3

Following on from the answers from LeoNerd and Hakon :- On CentOS 7 I had to run

sudo yum install perl-Term-ReadLine-Gnu

to install the module. Now the arrow keys work in perl -d

ozcoder
  • 41
  • 2
3

If you want to avoid installing additional OS libraries (or need to because you don't have root/sudo) you can just use CPAN to grab one of these two Perl implementations of Readline:

It's especially handy if you already have your own local Perl install (eg, using Perlbrew).

Randall
  • 2,859
  • 1
  • 21
  • 24
  • 1
    Uh? I you want to avoid installing additional libraries, you need to install the following additional libraries? – fishinear Aug 09 '16 at 11:07
  • 2
    @fishinear The difference is _where_ they are installed, at the OS level, or just within the confines of Perl. You don't really need an rpm or deb for it. I've edited my answer to try to clarify the difference. – Randall Sep 28 '16 at 16:38
  • 2
    This helped me. `cpan -f Term::ReadLine::Perl` worked. – Lane Sep 06 '18 at 07:17
2

This is what helped me on Debian stretch

apt install libterm-readline-gnu-perl
smonff
  • 3,399
  • 3
  • 36
  • 46
Fazley
  • 481
  • 4
  • 3
1

For "git for Windows" you can do the following:

From

Ilya Zakharevich's package Term-ReadLine-Perl-1.0303

download the file

Term-ReadLine-Perl-1.0303.tar.gz

extract it with

tar xvzf ../Term-ReadLine-Perl-1.0303.tar.gz

Two files

Term-ReadLine-Perl-1.0303/ReadLine/Perl.pm
Term-ReadLine-Perl-1.0303/ReadLine/readline.pm

have to be copied typically with admin rights into the directory

C:/Program Files/Git/usr/share/perl5/site_perl/Term/ReadLine/

resulting in the two files

C:/Program Files/Git/usr/share/perl5/site_perl/Term/ReadLine/Perl.pm and
C:/Program Files/Git/usr/share/perl5/site_perl/Term/ReadLine/readline.pm

Afterwards you can use the cursor keys inside the perl debugger, for instance inside a "perl -de 0" session.

In the 64 bit git for Windows SDK, you usually have to copy the two files into directory

C:/git-sdk-64/usr/share/perl5/site_perl/Term/ReadLine
0

What I ended up doing was changing the term of my 'Terminal' window to vt100 under the Preferences > Advanced

civelldr
  • 1
  • 2
0

Here's what I had to do to get it working with Cygwin Perl

Install the following Cygwin packages:

libncurses-devel
libreadline-devel

Then install the Term::ReadLine::Gnu module from CPAN

talkloud
  • 101
  • 1