James Edward Gray II wrote:
>
> On Feb 24, 2004, at 8:46 AM, Rafael Garcia-Suarez wrote:
> 
> >> But since it's inside an eval() call, those messages should get stuck
> >> in $@ and NOT printed.  As Randy has said, they would kill a normal
> >> program, if they were in the source.  They are not warnings.
> >
> > Nope. They are warnings, except that they are mandatory ones. You
> > need to write explicitly "no warnings" to disable them. If you do,
> > those messages go in $@ instead.
> 
> This is incorrect and easily proved.  Please run the following:
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> 
> my @code = (
>       q('a poorly 'nested' string'),
>       q('a poorly 'nested::nested' string'),
> );
> 
> for (@code) {
>       {
>               no warnings;
>               eval;
>       }
> #     print "Caught: $@" if $@;
> }
> 
> print "\nExiting normally.\n";
> 
> __END__

This prints nothing but "Exiting normally" with blead; and
now that you mention it... this was already reported as
a bug (#24815) and was fixed by change #22068.

Change 22068 by [EMAIL PROTECTED] on 2004/01/05 21:48:30

        Some mandatory syntax warnings emitted by the lexer weren't
        disableable (bug [perl #24815]).

Affected files ...

... //depot/perl/pod/perldiag.pod#366 edit
... //depot/perl/t/lib/warnings/toke#14 edit
... //depot/perl/toke.c#489 edit

> Note that ALL warnings are explicitly disabled and the program is no 
> longer printing the error messages yet the strange messages remain.  
> Also note that the program does reach the final print.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to