Я знаю, что передача скаляра в подпрограмму фактически передает ссылку, но, поскольку я новичок в perl, я все же провел следующий тест:
#!/usr/bin/perl
$i = 2;
subr(\$i);
sub subr{
print $_[0]."\n";
print $$_[0]."\n";
}
Я думал, что первая строка будет печатать адрес, а вторая строка будет возвращать номер, но вторая - пустая строка. Мне указал кто-то еще сделать это: ${$_[0]}
и он печатает число. Но она не знала, почему без {} не работает и почему работает с {}. Так что же произошло?