Как использовать ключевое слово "my" в Perl?

Я продолжаю видеть ключевое слово "Мой" перед именами переменных в Примере скриптов Perl в интернете, но я понятия не имею, что это значит. Я пробовал читать страницы руководства и другие сайты в интернете, но мне трудно понять, для чего это, учитывая разницу между тем, как я вижу, что он используется и руководство.

например, используется для получения длины массива в этом сообщении: найти размер массива в Perl

но в инструкции написано:

a my объявляет перечисленные переменные локальными (лексически) для заключительный блок, файл или eval. Если указано более одного значения список должен быть заключен в скобки.

что он делает и как он используется?

3 ответов


my ограничивает область переменной. Область переменной-это то, где ее можно увидеть. Сокращение объема переменной до того места, где переменная необходима, является фундаментальным аспектом хорошего программирования. Это делает код более читаемым и менее подверженным ошибкам, и в результате множество выгод.

если вы не объявляете переменную с помощью my глобальная переменная будет создана. Этого следует избегать. Используя use strict; говорит Perl, что вы хотите быть запрещено неявно создавать глобальные переменные, поэтому вы всегда должны использовать use strict;use warnings;) в ваших программах.


связанные чтения: зачем использовать use strict; и use warnings;?


краткое описание: my создает новую переменную, local временно изменяет значение переменной

в приведенном ниже примере$:: a ссылается на $a в "глобальном" пространстве имен.

$a = 3.14159;
{
  my $a = 3;
  print "In block, $a = $a\n";
  print "In block, $::a = $::a\n";
}
print "Outside block, $a = $a\n";
print "Outside block, $::a = $::a\n";

# This outputs
In block, $a = 3
In block, $::a = 3.14159
Outside block, $a = 3.14159
Outside block, $::a = 3.14159

ie,local временно изменяет значение переменной, но только в пределах области, в которой она существует.

источник:http://www.perlmonks.org/?node_id=94007

обновление

о разнице между our и my см.

(спасибо ThisSuitIsBlackNot).


частные переменные через my () - первичная документация my.

в Примере размера массива, который вы упомянули, он не используется для поиска размера массива. Он используется для создания новой переменной для хранения размера массива.