Я не понимаю, как функция Perl read ($ buf) может изменять содержимое переменной $ buf.$ buf не является ссылкой, поэтому параметр задается копией (насколько мне известно на языке c / c ++).Так почему же переменная $ buf изменяется в вызывающей программе?
Это переменная связи или что-то?Документация C о setbuf также довольно неуловима и неясна для меня
# 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