in reply to Re: Perl Syntax
in thread Perl Syntax

Thank you Dave. I thought it was doing something like as you explained. I just needed some confirmation from more experienced people like you. In regards to my other question, what is the syntax doing when you use:

 $hash{$_} = $new for $a, $b;

Is this assigning the value of $a and $b as keys for $new as the value in the hash table?

Replies are listed 'Best First'.
Re^3: Perl Syntax
by davido (Cardinal) on Oct 31, 2013 at 00:24 UTC

    Inside a foreach loop (for is synonymous with foreach) the $_ variable is aliased to each element of the list over which you are iterating. Sometimes it's called the "topic" variable, because it is the topic of each loop iteration unless you explicitly specify another variable. The code you demonstrated is equivalent to this:

    foreach ( $a, $b ) { $hash{$_} = $new; }

    ...which is about the same as...

    foreach my $item_alias ( $a, $b ) { $hash{$item_alias} = $new; }

    ...which can be unrolled as...

    $hash{$a} = $new; $hash{$b} = $new;

    A foreach loop that contains a simple statement in its block can be inverted to $hash{$_} = $new foreach $a, $b;, and further shortened with for. This should be discussed in greater (and possibly more accurate) detail in perlsyn.


    Dave

Re^3: Perl Syntax
by NetWallah (Canon) on Oct 30, 2013 at 23:22 UTC
    It is equivalent to:
    $hash{$a} = $new; $hash{$b} = $new;

                 When in doubt, mumble; when in trouble, delegate; when in charge, ponder. -- James H. Boren