Видимость в перле
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Видимость в перле Expand / Collapse
Автор
Сообщение
07.02.2005 15:32
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 21.02.2005 13:26
Сообщ.: 24, Visits: 265
Имеется вот такой код :

#!/usr/bin/perl
package Search;
@SEARCH_FILES_RESULTS=(0,0,0,0);
&Scan_Files();
for ($i=0;$i<2;$i++)
{
if (@SEARCH_FILES_RESULTS[$i] ==0)
{
print "<a href=\"$SEARCH_FILES[$i][1]\" target=\"_blank\">$SEARCH_FILES[$i][1]</a>";
}
}
sub Scan_Files
{
@SEARCH_FILES=(
["../../htdocs/template/ansi.html","index.html?p=122"],
["../../htdocs/template/apache.html","index.html?p=541"]);
...
}

Обьясните мне - почему это работает ?
Я имею ввиду , что массив @SEARCH_FILES обьявляется внутри функции
Scan_Files , но виден почему-то за ее пределами ...
Сообщ. #856342
07.02.2005 17:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.07.2006 17:05
Сообщ.: 124, Visits: 1 356
Так он же объявляется у тебя как глобальный - даже внутри функции.
Решение этой проблемы - использование my:

#!/usr/bin/perl

&Scan_Files();

sub Scan_Files
{
my @SEARCH_FILES=(
["../../htdocs/template/ansi.html","index.html?p=122"],
["../../htdocs/template/apache.html","index.html?p=541"]);
...
}

print scalar @SEARCH_FILES;

результат:

Name "main::SEARCH_FILES" used only once: possible typo at test.pl line 12.


PerlMonks.Org.Ru.... coming soon
Сообщ. #856376
07.02.2005 17:20
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 21.02.2005 13:26
Сообщ.: 24, Visits: 265
мдя
прикольный синтаксис у перла
Сообщ. #856381
07.02.2005 17:23
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.07.2006 17:05
Сообщ.: 124, Visits: 1 356
Ну да :). Переменная видна в области блока только если объявлена как my или local (если local, то также будет видна всем функциям которые будут вызваны из этого блока). То есть local немного шире задает область видимости.

PerlMonks.Org.Ru.... coming soon
Сообщ. #856384
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 4:06