Non capisco come la funzione di lettura Perl ($ buf) sia in grado di modificare il contenuto della variabile $ buf. $ buf non è un riferimento, quindi il parametro è dato dalla copia (dalla mia conoscenza c/C++). Quindi, come mai la variabile $ buf è stata modificata nel chiamante?Qual è la magia dietro la funzione perl read() e il buffer che non è un riferimento?
È una variabile legata o qualcosa del genere? La documentazione in merito setbuf è anche abbastanza sfuggente e poco chiaro a me
# 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
Grazie mille per il puntatore al documento pertinente, e il tuo trucco funziona, grazie mille –