I have been testing my mod_perl-1.26 applications under perl 5.7.3.

I have discovered that the tying of STDIN and STDOUT does not work.
This is caused by a change in the internals of the implementation
of tied handles in Perl. The following extract from the source
of Perl (pp_sys.c ll 764 ff) describes the change

            methname = "TIEHANDLE";
            how = PERL_MAGIC_tiedscalar;
            /* For tied filehandles, we apply tiedscalar magic to the IO
               slot of the GP rather than the GV itself. AMS 20010812 */
            if (!GvIOp(varsv))
                GvIOp(varsv) = newIO();
            varsv = (SV *)GvIOp(varsv);
            break;

I have got myself going by patching mod_perl as below. This
patch makes mod_perl work with 5.7.3, but, of course, stops it
working with 5.6.x. It is beyond my knowledge to make this patch
version dependent, as it needs to be.

*** /tmp/sccs.I.aOiq    Mon Mar 18 14:41:11 2002
--- perlio.c    Mon Mar 18 12:18:22 2002
***************
*** 54,61 ****
  #define TIEHANDLE(name,obj) \
  { \
        dHANDLE(name); \
!       sv_unmagic((SV*)handle, 'q'); \
!       sv_magic((SV*)handle, obj, 'q', Nullch, 0); \
  }
  
  #if 0
--- 54,61 ----
  #define TIEHANDLE(name,obj) \
  { \
        dHANDLE(name); \
!       sv_unmagic((SV*)GvIOp((SV*)handle), 'q'); \
!       sv_magic((SV*)GvIOp((SV*)handle), obj, 'q', Nullch, 0); \
  }
  
  #if 0

-- 
Charles Jardine - Computing Service, University of Cambridge
[EMAIL PROTECTED]    Tel: +44 1223 334506, Fax: +44 1223 334679

Reply via email to