> [EMAIL PROTECTED] - Fri Aug 12 18:18:40 2005]:
>
>
> This is a bug report for perl from [EMAIL PROTECTED],
> generated with the help of perlbug 1.34 running under perl v5.8.0.
>
>
> -----------------------------------------------------------------
> [Please enter your report here]
>
> plover% perl -wle '$x="pq"; print readdir $x'
> Bad symbol for filehandle at -e line 1.
>
> But it should be
>
> Bad symbol for dirhandle at -e line 1.
>
A heuristic. What does Klortho say about that...
#11953 Of course, this is a heuristic, which is a fancy way of saying
that it doesn't work.
This error message above comes from the following code in gv.c
GV *
Perl_gv_IOadd(pTHX_ register GV *gv)
{
if (!gv || SvTYPE((SV*)gv) != SVt_PVGV)
Perl_croak(aTHX_ "Bad symbol for filehandle");
if (!GvIOp(gv)) {
#ifdef GV_UNIQUE_CHECK
if (GvUNIQUE(gv)) {
Perl_croak(aTHX_ "Bad symbol for filehandle (GV is unique)");
}
#endif
GvIOp(gv) = newIO();
}
return gv;
}
Unfortunately, it assumes all typeglobs are filehandles. That means the
following code works, well prints nothing at least, without warning.
perl -Mstrict -wle 'my $x="pq"; *X = $x; print readdir X'
It also means that, since there doesn't seem to be a way to distinguish
between filehandles and dirhandles, the following also runs without
warnings.
perl -Mstrict -wle 'open X, "foo"; print readdir X'