POD2-FR

 view release on metacpan or  search on metacpan

FR/perltrap.pod  view on Meta::CPAN

elle essaye maintenant de déréfencer $x. C<$$> tout seul fonctionne
toutefois toujours bien.

    $s = "a reference";
    $x = *s;
    print "this is $$x\n";

    # perl4 affiche : this is XXXx   (XXX is the current pid)
    # perl5 affiche : this is a reference

=item * Le création d'une table de hachage au vol par un C<eval
"EXPR"> doit être protégée

La création de hachage à la volée par C<eval "EXPR"> exige maintenant
soit que les deux C<$> soient protégés dans la spécification du nom du
hachage, soit que les deux accolades soient protégées. Si les
accolades sont protégées, le résultat sera compatible entre perl4 et
perl5. C'est une pratique très commune qui devrait être modifiée de
façon à utiliser si possible la forme bloc d'C<eval{}>.

    $hashname = "foobar";
    $key = "baz";
    $value = 1234;
    eval "\$$hashname{'$key'} = q|$value|";
    (defined($foobar{'baz'})) ?  (print "Yup") : (print "Nope");

    # perl4 affiche : Yup
    # perl5 affiche : Nope

En changeant

    eval "\$$hashname{'$key'} = q|$value|";

par

    eval "\$\$hashname{'$key'} = q|$value|";

on obtient le résultat suivantE<nbsp>:

    # perl4 affiche : Nope
    # perl5 affiche : Yup

ou en le changeant par

    eval "\$$hashname\{'$key'\} = q|$value|";

on obtient le résultat suivantE<nbsp>:

    # perl4 affiche : Yup
    # perl5 affiche : Yup
    # et est compatible avec les deux versions

=item * Bogues des versions précédentes de perl

Certains programmes perl4 se reposaient inconsciemment sur les bugs de
versions précédentes de perl.

    perl -e '$bar=q/not/; print "This is $foo{$bar} perl5"'

    # perl4 affiche : This is not perl5
    # perl5 affiche : This is perl5

=item * Interpolation de crochets (tableaux) et des accolades (tables de hachage)

Vous devez faire attention à l'interpolation des crochets (tableaux)
et des accolades (tables de hachage).

    print "$foo["

    perl 4 affiche : [
    perl 5 affiche : syntax error

    print "$foo{"

    perl 4 affiche : {
    perl 5 affiche : syntax error

Perl 5 s'attend à trouver un indice (ou une clé) après le crochet
ouvrant (ou l'accolade ouvrante) ainsi que le crochet fermant
(l'accolade fermante) correspondant. Pour retrouver le comportement de
Perl 4, vous devez protéger votre crochet (ou accolade) par le
caractère d'échappement.

    print "$foo\[";
    print "$foo\{";

=item * Interpolation de C<\$$foo{bar}>

De façon similaire, prenez garde à C<\$$foo{bar}>

    $foo = "baz";
    print "\$$foo{bar}\n";

    # perl4 affiche : $baz{bar}
    # perl5 affiche : $

Perl 5 cherche C<$array{bar}> qui n'existe pas, mais perl 4 est
content de simplement substituer $foo par "baz". Faites attention à
cela, en particulier dans les C<eval>'s.

=item * Une chaîne C<qq()> dans un C<eval> ne trouve pas sa fin de chaîne

Une chaîne C<qq()> passée à C<eval> pose le problème suivantE<nbsp>:

    eval qq(
        foreach \$y (keys %\$x\) {
            \$count++;
        }
    );

    # perl4 exécute cela sans problème
    # perl5 affiche : Can't find string terminator ")"

=back

=head2 Pièges DBM

Pièges généraux de DBM.

=over 5



( run in 3.885 seconds using v1.01-cache-2.11-cpan-63c85eba8c4 )