Это кажется действительно простым, но это дает мне трудное время, понимая это, поскольку я плохо знаком с жемчугом.. Я просматривал много документации теперь о циклах, и я все еще озадачен этим... У меня есть sub, который содержит некоторое время цикл, и я хочу использовать значение переменной из цикла за пределами цикла (после того, как цикл работал), однако когда я пытаюсь распечатать переменную или возвращаю ее из sub, она не работает, только когда я печатаю переменную из цикла, делает она работает.. Я ценил бы любой совет относительно того, что я делаю неправильно.
Не работает (не печатает $test):
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
}
print $test ;
}
&testthis ;
Работы, $test печати:
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
print $test ;
}
}
&testthis ;
Вы объявляете переменную test внутри цикла, поэтому ее область видимости - цикл, как только вы выходите из цикла, переменная больше не объявляется.
Добавьте my $test;
между $i=1
и while(...)
и все заработает. Теперь областью видимости будет весь подцикл, а не только цикл
вы можете попробовать этот:
sub testthis {
my $test
$i = 1;
while ($i <= 2) {
$test = 'its working' ;
$i++ ;
print $test ;
}
}
&testthis ;
Примечание: всякий раз, когда пишете код на perl, лучше добавить use strict;
и use warning
в начало кода.
Поместите my $test
перед циклом while. Обратите внимание, что он будет содержать только последнее значение, присвоенное в цикле while. Это то, что вам нужно?
// will print "it's working" when 'the loop is hit at least once,
// otherwise it'll print "it's not working"
sub testthis {
$i = 1;
my $test = "it's not working";
while ($i <= 2) {
$test = "it's working";
$i++ ;
}
print $test ;
}