http://www.perlmonks.org?node_id=1009577


in reply to can understand one line of code

Break it down:

  1. grep( expression, @{ ... } )
  2. The expression  s#$#$RegObj->{DELIM}#

    start with 's', so it is a substitution.

    The #s are delimiters so the two sides are: $ and $RegObj->{DELIM}

    So it is substituting the module defined delimiter for any '$'s every end of line.

  3. The array: @{ $RegObj->{MEMBERS}= [ @{$RegObj->{SUBKEYS}} ] }

    Contains an assignment: $RegObj->{MEMBERS}= [ @{$RegObj->{SUBKEYS}} ]

    It copies the array of subkeys : @{ $RegObj->{SUBKEYS} } into an anonymous array [ ... ]

    And assigns its reference to $RegObj->{MEMBERS} = ...

    Then it dereferences that to supply the subkeys to grep.

Thus, that one line is equivalent to:

my @temp = @{ $RegObj->{SUBKEYS} }; $RegObj->{MEMBERS} = \@temp; grep s[$][$RegObj->{DELIM}], @temp;

Without the need for @temp; but less efficient.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong