Вот мой код Perl:Почему эта лексическая переменная не сохраняет свое значение после цикла?
use strict;
use warnings;
my @words = ("alpha", "bravo", "charlie");
(my $word = $_) foreach @words;
print $word;
Я ожидал бы этот код, чтобы сделать одну из двух вещей:
- Печатают строку «чарли», которая является окончательным значением
$word
после цикла завершено. - Пожаловаться на компиляцию error, так как
my $word
- лексическая переменная, scope - областьforeach
; он не существует на последней строке.
Вместо этого, кажется, значение $word
является undef
и Perl поднимает предупреждение и печатает пустую строку.
Почему?
Я немного удивлен, что 'warnings' или' strict' не жалуются, потому что для меня это выглядит как переменная, которая больше не находится в сфере видимости. – Sobrique