|
|
|
Junior 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 , но виден почему-то за ее пределами ...
|
|
|
|
|
Supreme 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
|
|
|
|
|
Junior Member
      
участник
Last Login: 21.02.2005 13:26
Сообщ.: 24,
Visits: 265
|
|
мдя прикольный синтаксис у перла
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
Ну да :). Переменная видна в области блока только если объявлена как my или local (если local, то также будет видна всем функциям которые будут вызваны из этого блока). То есть local немного шире задает область видимости.
PerlMonks.Org.Ru.... coming soon
|
|
|
|