How should I use the “my” keyword in Perl?

后端 未结 3 1586
温柔的废话
温柔的废话 2020-11-29 00:38

I keep seeing the \"my\" keyword in front of variable names in example Perl scripts online but I have no idea what it means. I tried reading the manual pages and other site

相关标签:
3条回答
  • 2020-11-29 01:02

    my restricts the scope of a variable. The scope of a variable is where it can be seen. Reducing a variable's scope to where the variable is needed is a fundamental aspect of good programming. It makes the code more readable and less error-prone, and results in a slew of derived benefits.

    If you don't declare a variable using my, a global variable will be created instead. This is to be avoided. Using use strict; tells Perl you want to be prevented from implicitly creating global variables, which is why you should always use use strict; (and use warnings;) in your programs.


    Related reading: Why use use strict; and use warnings;?

    0 讨论(0)
  • 2020-11-29 01:15

    Private Variables via my() is the primary documentation for my.

    In the array size example you mention, it's not used to find the size of the array. It's used to create a new variable to hold the size of the array.

    0 讨论(0)
  • 2020-11-29 01:17

    Quick summary: my creates a new variable, local temporarily amends the value of a variable

    In the example below, $::a refers to $a in the 'global' namespace.

    $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 temporarily changes the value of the variable, but only within the scope it exists in.

    Source: http://www.perlmonks.org/?node_id=94007

    Update

    About difference between our and my please see

    • What is the difference between my and our in Perl?

    (Thanks to ThisSuitIsBlackNot).

    0 讨论(0)
提交回复
热议问题