[Bug 183553] perlbug #38657: Using import() with arguments with -d: broke in 5.8.8, was okay in 5.8.7

bugzilla at redhat.com bugzilla at redhat.com
Wed Mar 1 23:08:06 UTC 2006

Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug report.

Summary: perlbug #38657: Using import() with arguments with -d: broke in 5.8.8, was okay in 5.8.7


------- Additional Comments From jvdias at redhat.com  2006-03-01 18:07 EST -------
Actually, under perl-5.8.0, perl-5.8.5, perl-5.8.6, and perl-5.8.7, 
'q\0foo\0' does NOT work (I have tested all versions) - I get the
same result :

$ perl -e '$s=q\0foo\0;'
Number found where operator expected at -e line 1, near "q\0foo\0"
syntax error at -e line 1, near "q\0foo\0"
Execution of -e aborted due to compilation errors.

This is because '\' is a legal delimiter for q(), and the parse breaks
on the last '0;' .

$ perl -e '$s=q\0foo\; print $s,"\n";'

But if I actually create a file with 'q{0x0}foo{0x0}', it DOES work OK on all 

$ cat tq.pl
print "$s\n";
$ ./tq.pl
$ tr '0' '\0' < tq.pl > tq0.pl
$ od -c tq0.pl
0000000   #   !   /   u   s   r   /   b   i   n   /   p   e   r   l  \n
0000020   $   s   =   q  \0   f   o   o  \0   ;  \n   p   r   i   n   t
0000040       "   $   s   \   n   "   ;  \n
$ ./tq0.pl

So q\0foo\0 with real, unescaped 0x0 chars DOES work OK on all versions .

I think it is just that 0x0 is a bad choice for a '%c' in Perl_sv_catpvf, as
it terminates the C string, and the interpreter doesn't get the rest of the
expression . So I think the first fix posted is OK .

If we really must make Perl_sv_catpvf handle 0x0 chars OK in expressions, 
that is a different problem - I think it is debatable whether it is a problem
worth fixing.

Configure bugmail: https://bugzilla.redhat.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the Fedora-perl-devel-list mailing list