http://qs321.pair.com?node_id=651170


in reply to Bug : eval and accent

This could be a bug in Perl or your not using the correct syntax to handle the variable.
Here is my fix to your code.
#!/usr/bin/perl my $code1='my $var_with_é_accent;'; print "Eval buggy code\n"; eval {$code1;}; # Should see "Useless use of private variable in void +context at Untitled line 6." print "ERR = $@" if ($@);; # Error doesnt show here print "DONE\n"; my $string; my $code2='$string="new eval done";'; print "Eval good code\n"; eval $code2; print "ERR = $@" if ($@); print "string is : $string\n"; # This Works print "DONE\n";


Good Luck ^^

Replies are listed 'Best First'.
Re^2: Bug : eval and accent
by polettix (Vicar) on Nov 16, 2007 at 15:02 UTC
    You're aiming at the wrong thing, see Re^2: Bug : eval and accent. Moreover, the two evals are definitively not the same, see the docs. You can't eval what's inside a string using the block form; the warning you see is the same that you would see simply writing:
    $code1;
    without the eval, i.e. using a private variable in a void context. Try perl -we 'my $x; $x' (quoting may change if you're in Windows) on the command line to see it.

    As sylvanus_monachus points out, the bug is in the second eval, which is executed (see ikegami's Re: Bug : eval and accent) but not correctly.

    In any case, I'd surely avoid eval-ing code that comes from the outside world... unless it's me ;)

    Flavio
    perl -ple'$_=reverse' <<<ti.xittelop@oivalf

    Io ho capito... ma tu che hai detto?