Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.93k stars 552 forks source link

Perl debugger ("perl -d") breaks with long input lines #373

Closed p5pRT closed 20 years ago

p5pRT commented 25 years ago

Migrated from rt.perl.org#1208 (status was 'resolved')

Searchable as RT1208$

p5pRT commented 25 years ago

From ariels@compugen.co.il

When I enter a very long input line in the Perl debugger\, it appears to be chopped off around the 256 character mark. [Since it appears to expect a new token at that point\, I was unable to verify the exact location where things break\, but I suspect 256 or 255 characters\, for obvious reasons].

Here's a sample transcript from the debugger (taken while running "perl -de 42")​:

  DB\<24> $x = '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'

  DB\<24> p $x 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789   DB\<25> $x = '01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' String found where operator expected at (eval 29) line 2\, at end of line   eval '($@​\, $!\, $^E\, $\,\, $/\, $\\\, $^W) = @​saved;package main; $^D = $^D | $DB​::db_stop; 123456789\';

;' called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1239   DB​::eval called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1133   DB​::DB called at -e line 1   (Missing operator before ?)   eval '($@​\, $!\, $^E\, $\,\, $/\, $\\\, $^W) = @​saved;package main; $^D = $^D | $DB​::db_stop; 123456789\';

;' called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1239   DB​::eval called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1133   DB​::DB called at -e line 1 Can't find string terminator "'" anywhere before EOF at (eval 29) line 2\, \ chunk 26.   eval '($@​\, $!\, $^E\, $\,\, $/\, $\\\, $^W) = @​saved;package main; $^D = $^D | $DB​::db_stop; 123456789\';

;' called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1239   DB​::eval called at /usr/local/lib/perl5/5.00503/perl5db.pl line 1133   DB​::DB called at -e line 1

  DB\<26>

I apologise for not providing a more detailed analysis.

Many thanks.

Perl Info ``` Site configuration information for perl 5.00503: Configured by mike at Fri Jun 4 12:44:49 IDT 1999. Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=solaris, osvers=2.6, archname=sun4-solaris uname='sunos cosmos 5.6 generic_105181-11 sun4u sparc sunw,ultra-2 ' hint=recommended, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-fast', gccversion= cppflags='-I/usr/local/include' ccflags ='-I/usr/local/include' stdchar='unsigned char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 alignbytes=8, usemymalloc=y, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -lgdbm -ldl -lm -lc -lcrypt libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-KPIC', lddlflags='-G -L/usr/local/lib' Locally applied patches: @INC for perl 5.00503: /home/ariels/lib/perl5 /home/ariels/lib/perl5/site_perl/sun4-solaris /home/ariels/lib/perl5/site_perl /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/sun4-solaris /usr/local/lib/perl5/site_perl . Environment for perl 5.00503: HOME=/home/ariels LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/opt/SUNWspro/SC2.0.1:/opt/SUNWspro/SC3.0.1:/usr/openwin/lib:/usr/local/lib LOGDIR (unset) PATH=.:/home/ariels/bin:/home/ariels/bin/SUNexe:/usr/atria/bin:/usr/bin:/usr/sbin:/etc:/usr/etc:/usr/openwin/bin/xview:/usr/openwin/bin:/usr/local/bin:/usr/ccs/bin:/usr/openwin:/usr/openwin/demo:/usr/local/opt/SUNWspro/bin:/usr/local/opt/SUNWss/bin:/usr/ucb:/usr/local/tex/TeX/bin:/usr/local/kde/bin PERL5LIB=/home/ariels/lib/perl5:/home/ariels/lib/perl5/site_perl PERL_BADLANG (unset) SHELL=/bin/tcsh ```
p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

Ariel Scolnicov writes​:

When I enter a very long input line in the Perl debugger\, it appears to be chopped off around the 256 character mark.

What happens if you enter this line to

  perl -wle '$in = \; print "Entered​: \<$in>"';

?

Most probably it is your system's tty-handler's buffer. Get Term​::ReadLine​::{Perl|Gnu} to substitute a different input method.

Ilya