Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: my within brackets

by jo37 (Deacon)
on Oct 14, 2021 at 20:19 UTC ( [id://11137546] : note . print w/replies, xml ) Need Help??

in reply to my within brackets

my may be used almost everywhere, as in the common idioms

open my $fh, '<', $file;


while (defined (my $it = get_it())) { do_with_it($it); }



Replies are listed 'Best First'.
Re^2: my within brackets
by ikegami (Patriarch) on Oct 15, 2021 at 14:00 UTC

    It's more than that. my() even counts as (my) at the grammar level.

    Aside from their use of overriding precedence, their use in flow control statements, and their use in function prototypes and parameter lists, parens are syntactically significant in five places:

    $x = 4; # Scalar assignment operator (sassign) ($x) = 4; # List assignment operator (aassign) $x x 4 # String repetition operator (repeat) ($x) x 4 # Scalar repetition operator (repeat/DOLIST) \$x, $y # The referencing isn't distributed. \($x, $y) # The referencing is distributed. use Mod; # Calls import. use Mod (); # Doesn't call import. @a = ; # Illegal @a = (); # Stub operator

    my ($x, $y) is considered the same as (my $x, my $y) in all five of those circumstances.

    my ($x) = 4; # Same as: (my $x) = 4; my ($x) x 4 # Same as: (my $x) x 4 \my ($x, $y) # Same as: \(my $x, my $y) use Mod my(); # Same as: use Mod (); @a = my(); # Same as: @a = ();