Hi all,
This is my first mod_perl bug report, so I'd like to start by thanking you
all for your great work over the years.
The problem I am experiencing involves passing a scalar reference (instead
of a scalar) to $r->print(). It usually works as documented. However I
have come across a situation where instead of printing the contents, it
prints the string version of the ref itself: "SCALAR(0x8ca70e4)".
After some research, it seems that I can trigger this behavior by doing a
certain type of regex on the scalar reference, specifically: a successful
regex that includes a backreference.
Here is a short handler that demonstrates:
package reftest;
use strict;
use warnings;
sub handler {
my $r = shift;
$r->send_http_header("text/plain");
my $data = "hello\n";
my $dataref = \$data;
# normally we can pass a reference to Apache's print
$r->print($dataref);
$$dataref =~ s/(h)/$1/;
# but not if we've done a successful backreferenced pattern match
$r->print($dataref);
}
1;
And in the conf file:
PerlRequire /path/to/file/reftest.pl
<Location /reftest>
SetHandler perl-script
PerlHandler reftest
</Location>
On the first request to a given child, I get:
hello
SCALAR(0x8ca70e4)
On subsequent requests I get:
SCALAR(0x8ca70e4)SCALAR(0x8ca70e4)
There are no messages in the error log when this happens. I am using
Apache/1.3.28 (Unix) mod_perl/1.28 mod_ssl/2.8.15 OpenSSL/0.9.7b under
FreeBSD 4.6.2-release. The output of perl -V is below.
Thanks in advance for your time, let me know if you need any further
information!
Jonathan Field
-------------------
--- perl -V output:
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
Platform:
osname=freebsd, osvers=4.6.2-release, archname=i386-freebsd
uname='freebsd dev1.zappos.com 4.6.2-release freebsd 4.6.2-release #0:
wed aug 14 21:23:26 gmt 2002
[EMAIL PROTECTED]:usrsrcsyscompilegeneric i386 '
config_args='-sde -Dprefix=/usr/home/zappos/zappos.com/perl
-Darchlib=/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/mach
-Dprivlib=/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1
-Dman3dir=/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/man/man3
-Dsitearch=/usr/home/zappos/zappos.com/perl/lib/perl5/site_perl/5.6.1/mach
-Dsitelib=/usr/home/zappos/zappos.com/perl/lib/perl5/site_perl/5.6.1
-Ui_malloc -Ui_iconv
-Dccflags=-DAPPLLIB_EXP="/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/BSDPAN"
-Ui_gdbm -Dusemymalloc=n'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler:
cc='cc', ccflags
='-DAPPLLIB_EXP="/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/BSDPAN"
-fno-strict-aliasing -I/usr/local/include',
optimize='-O -pipe ',
cppflags='-DAPPLLIB_EXP="/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/BSDPAN"
-fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='2.95.3 20010315 (release) [FreeBSD]',
gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags ='-Wl,-E -L/usr/local/lib'
libpth=/usr/lib /usr/local/lib
libs=-lm -lc -lcrypt -lutil
perllibs=-lm -lc -lcrypt -lutil
libc=, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-DPIC -fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: USE_LARGE_FILES
Built under freebsd
Compiled at Aug 21 2002 18:35:52
@INC:
/usr/home/zappos/zappos.com/perl/lib/perl5/site_perl/5.6.1/mach
/usr/home/zappos/zappos.com/perl/lib/perl5/site_perl/5.6.1
/usr/home/zappos/zappos.com/perl/lib/perl5/site_perl
/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/BSDPAN
/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1/mach
/usr/home/zappos/zappos.com/perl/lib/perl5/5.6.1
.
--
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html