in reply to Array elements in a hash

grep is a good place to start. Read up on it and map. They're the basis for the list operators. To answer your direct question:
if (grep { $thing_to_look_for } @{$VAR1{$x}{OID_NAME}}) { # Do something cool }
A better thing, however, would be to figure out what you want to be able to ask your data, then structure it as such. You're allowed to represent your data within your program any way you want to. You don't have to take the first representation that comes along. Presumably, that representation was for some other programmer's questions, not yours.

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

Replies are listed 'Best First'.
Re: Re: Array elements in a hash
by Anonymous Monk on Mar 24, 2003 at 21:25 UTC
    Thanks dragonchild,
    I always forget about using grep (working on win_32)

    One more question, do you know if it's possible to determine the indice of the element in the array using grep?

    Thanks!

      It all depends on what you grep for. Think about it this way - you're taking a list and creating another list from it, applying some criterion to determine if you should include that element or not. It can be a list of anything you want, not just necessarily the elements of the array.

      The following snippets below are identical:

      my @positive_indices = grep { $arr[$_] > 0 } 0 .. $#arr; my @negative_indices = grep { $arr[$_] < 0 } 0 .. $#arr; #### my @positive_indices = map { $arr[$_] > 0 ? $_ : () } 0 .. $#arr; my @negative_indices = map { $arr[$_] < 0 ? $_ : () } 0 .. $#arr; #### my @positive_indices; my @negative_indices; for (0 .. $#arr) { push @positive_indices, $_ if $arr[$_] > 0; push @negative_indices, $_ if $arr[$_] > 0; }

      ------
      We are the carpenters and bricklayers of the Information Age.

      Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

      Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

        ok, that makes sense,
        now if I'm using my data example above, and I have in fact determined that a duplicate entry is seen, what does the snippet of code look like to increase the counter in my array?
        $VAR1 = { 'response_1.3.6.1.2.1.2.2.1.12.27' => { 'Time_Arrived' => '16:14:13.8', 'Error_Status' => 'No error', 'OID_NAME' => [ [], [ '1.3.6.1.2.1.2.2.1.11.27', 'ifInUcastPkts.27', 1 ], [ '1.3.6.1.2.1.2.2.1.15.27', #seen again 'ifInUnknownProtos.27', 1 # I need to increment this to 2 ],
        Thanks for all your help!