Je n'arrive pas à comprendre comment la fonction Perl read ($ buf) est capable de modifier le contenu de la variable $ buf. $ buf n'est pas une référence, donc le paramètre est donné par copy (à partir de mes connaissances c/C++). Alors, comment se fait-il que la variable $ buf soit modifiée dans l'appelant?Quelle est la magie derrière perl read() fonction et le tampon qui n'est pas un ref?
Est-ce une variable de lien ou quelque chose? La documentation C à propos setbuf est également tout à fait insaisissable et pas clair pour moi
# Example 1
$buf=''; # It is a scalar, not a ref
$bytes = $fh->read($buf);
print $buf; # $buf was modified, what is the magic ?
# Example 2
sub read_it {
my $buf = shift;
return $fh->read($buf);
}
my $buf;
$bytes = read_it($buf);
print $buf; # As expected, this scope $buf was not modified
Merci beaucoup pour le pointeur vers le doc pertinent, et votre tour fonctionne, merci beaucoup –