RE: odd recdescent 1.80 behaviour
[email protected] (Roger Pettett) Wed, 29 Jan 2003 11:31:22 +0000 (GMT)
| Newsgroups | perl.recdescent |
|---|---|
| Message-ID | <Pine.LNX.4.44.0301291128570.21426-100000@temple> |
Ok, this seems to have been caused by some interaction via sub AUTOLOAD
in a module of mine which was subclassing P::RD. Hmm. It's really tricky
tracing warnings sometimes!
Thanks very much for the help,
R.
On Wed, 29 Jan 2003, Orton, Yves wrote:
> > Does anyone have any idea why this works perfectly:
> > while(<FIN>) {
> > print $parser->record($_);
> > }
> >
> > but the following fails to parse exactly the same input:
> >
> > while(my $rec = <FIN>) {
> > print $parser->record($rec);
> > }
>
> I dont think its relevent in this situation but the above two whiles arent
> equivelent you know.
>
> while(defined(my $rec = <FIN>)) {
>
> is equivelent to
>
> while(<FIN>) {
>
> > The latter throws the following warnings:
> > Use of uninitialized value in index at
> > /usr/local/lib/perl5/site_perl/5.8.0/Parse/RecDescent.pm line
> > 2979, <GEN0> line 67.
> > Use of uninitialized value in index at
> > /usr/local/lib/perl5/site_perl/5.8.0/Parse/RecDescent.pm line
> > 2979, <GEN0> line 67.
> > Use of uninitialized value in length at
> > /usr/local/lib/perl5/site_perl/5.8.0/Parse/RecDescent.pm line
> > 2734, <GEN0> line 67.
> > Use of uninitialized value in substitution (s///) at (eval
> > 80) line 2207, <GEN0> line 67.
> > Use of uninitialized value in substitution (s///) at (eval
> > 80) line 2207, <GEN0> line 67.
> >
> > This would perhaps suggest that the input is different but
> > it's definitely not.
>
> Er, since you didn't give us any sample data its a bit hard to tell if this
> is true. Sorry to doubt you but....
>
> For instance it might be interesting to see the output of Devel::Peek on the
> two values.
>
> Ive played with some of my P::RD's under these two constructs and I see no
> difference at least in 5.6.1. (Dont have 5.8 to check against right now)
>
> > The same warnings are thrown if I read the same input
> > data from a
> > socket-server source.
>
> Based on my experience with 5.6.1 and 5.8 I would think that this has to do
> with 5.8 new IO layers. Try changing it to use the perlio layers directly. I
> believe that you can do this easiest by setting the enviornment variable
>
> PERLIO=perlio
>
> BTW, if this doesnt help then can you try to replicate this under 5.6.1 and
> if there is no error then report it along with as minimal a piece of code
> that you can that replicates the problem to
>
> [email protected]
>
> It might be worth trawling the p5p archives and the bug reporting system to
> see if this is in fact a 5.8 error that has already been resolved/worked
> around etc.
>
> A last thought is that it could have to do with what OS you are on. I know
> that red hat has problems sometimes due to UTF8 setting (this is wild
> guess). seeing the output of perl -V would be useful.
>
> Anyway, I hope some of this turns out to be useful, let me know how it
> turned out,
> Cheers,
> yves
>
>
>
--
+---------------------------------------------------------------+
Roger Michael Pettett Email: [email protected]
Project Leader (Web Systems), Web: http://www.sanger.ac.uk/
The Sanger Institute http://www.yourgenome.org/
Wellcome Trust Genome Campus http://www.ensembl.org/
Hinxton
Cambridge CB10 1SA
+---------------------------------------------------------------+