Задать вопрос
FreeTibet
@FreeTibet
dharma supplier

Ссылки в perl

Объясните, пожалуйста, почему результата выполнения этой программы:


$a = 'a';
$b = \$a;
$c = $$b;
$a = 'bb';
print "$$c\n";
print "$c\n";


вот такой:
bb
a
  • Вопрос задан
  • 2894 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
После третьей строчки $c является строкой 'a'. $$c является раскрытием переменной с именем, равным содержимому $c — то есть переменной $a, которая к моменту печати уже содержит значение 'bb'. Соответственно, первой строкой печатается 'bb'. Второй строкой печатается просто содержимое $c, то есть 'a'.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
как я понимаю во второй строке ошибка, не '\$a' а '&$a'?
$a = 'a'; // переменная a значение a
$b = &$a; // переменная b значение всегда будет равно значению переменной a (т.е. сейчас это 'a')
$c = $$b; // переменная c равна значению переменной, имя которой в переменной b, т.е. равна значению переменной a, значит равна 'a'
$a = 'bb'; // переменная a меняет значение на 'bb', значит переменная b так же теперь возвращает 'bb'
print "$$c\n"; // выводит значение переменной, имя которой в переменной c, сейчас там значение a, значит результат переменной с именем a сейчас 'bb'
print "$c\n"; // значение переменной c — 'a'
Ответ написан
FloppyFormator
@FloppyFormator
Поведение перла в стрикте мне нравится гораздо больше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы