Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: perl array of hashes help

by Anonymous Monk
on May 02, 2012 at 05:24 UTC ( #968355=note: print w/ replies, xml ) Need Help??


in reply to Re: perl array of hashes help
in thread perl array of hashes help

Hi Trizen, Thanks for your help , the code is working fine, can you please explain the two codes, similar to first one when i tried like this grep { $_->{bill} =~ '1117'} @array dint worked.. so what does ~~ this mean could you please explain me clearly. regards Sridhar


Comment on Re^2: perl array of hashes help
Re^3: perl array of hashes help
by trizen (Hermit) on May 02, 2012 at 12:20 UTC
    Hi Sridhar! Please take a look at the smart match operator. As you can see, 'item' ~~ \@array returns true if the 'item' exists inside the array passed as an array reference.

    Your code doesn't work because $_->{bill} is a reference to an array, so what you are actually trying is something like this: 'ARRAY(0x886b7f8)' =~ /1117/; (i.e.: return true if the left side contains the substring from the right side).

    Of course, if you're trying to match a substring inside an array, you can use: grep { qr/1117/ ~~ $_->{bill} } @array;
      Hi Trizen,

      I have one question regarding access of the perl hash key which is an array reference like below i have an hash

       my $all = {'text' => [                                      'HJ0039_x.pdf' , 'HJ0039' , 'HJ0039'                                      ]};

      To access the above elements i can use two ways like below

       print " $all->{text}[0] ;

      and

       print "${$all->{text}}[0]

      can you please explain me clearly what is the difference between the above two methods , without de-referencing the array how we are able to access the array elements

      Thanks

        Hello Ragilla,

        The code $all->{text}[0] is equivalent with $all->{text}->[0]. This implies an implicit dereference. Similar with $array_ref->[0].

        In the second code, ${$all->{text}}[0] is similar with $array[0], because $all->{text} is an ARRAY REF, and @{ARRAY_REF} is similar with @array, which can lead to ${ARRAY_REF}[index].

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://968355]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2015-07-04 22:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls