Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Hash of arrays

by NetWallah (Abbot)
on Dec 28, 2012 at 06:23 UTC ( #1010646=note: print w/ replies, xml ) Need Help??


in reply to Hash of arrays

The basic access syntax code you posted looks fine , but could be better formated using <code> tags:

foreach $newdn (sort keys %newgrouphash ) { print "Name:$newdn\n\t"; foreach $group ( sort @{$newgrouphash{$newdn}} ) { print "$group, "; } print "\n"; }
If you print like the code above, the name should print only once.

             "By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest."           -Confucius


Comment on Re: Hash of arrays
Download Code
Re^2: Hash of arrays
by perlloz (Initiate) on Dec 28, 2012 at 07:13 UTC
    Thanks, I still get this result: Name: Name:CN=test123,OU= etc etc The group prints fine
      How can we know why things get printed twice? The code you showed does not even have a print statement!

      I am pushing a user name and an array of AD groups for that user name into a hash of arrays: Code: push (@{$newgrouphash{"$newdn"} },"$newgroup")
      You are not pushing an array of AD groups into a HoA. You are pushing the stringified version of a scalar into your HoA. For a start, drop all the double quotes around your variables. They serve no purpose. Then check whether $newgroup indeed contains a reference to your array of AD groups.

      And finally show us the code you use to output this data.

      CountZero

      A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

      My blog: Imperial Deltronics
        Sorry, new here, I used the print statements from the previous posters suggestions. The actual data being pushed into the HOA is a lot of code and is an AD query so it wouldn't compile. What I end up with is a key of Bob and an array containing groups: domain users, testing, server team etc
        push (@{$newgrouphash{"$newdn"} },"$newgroup"); foreach $newdn (sort keys %newgrouphash ) { print "Name:$newdn\n\t"; foreach $group ( sort @{$newgrouphash{$newdn}} ) { + if (!($group =~ /CN=Domain Users/i)) { # print "$group, "; + $res = `dsmod group $group -rmmbr \"$newdn\"`; + print "$res\n";

      Thanks, I still get this result: Name: Name:CN=test123,OU= etc etc The group prints fine

      Funny :)

      If you want help, you'll need to provide sample data (as in Data::Dump, Data::Dumper ... ) as Basic debugging checklist explains

      As others have suggested, please post the code where you do the "push", and the "print".

      I re-read your statement:

      I am pushing a user name and an array of AD groups for that user name into a hash of arrays
      So -it sounds like you are pushing both the NAME and the GROUP into the hash value.
      This is in addition to the name being in the Key.

      If this is the case, it would indeed explain the name coming out twice, since you (or at least my posted code) prints the key and value.

      Anyway - this discussion would be a lot less abstract and hypothetical, if you posted your actual code.
      In it's absence, interest in assisting you is rapidly waning.

                   "By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest."           -Confucius

        sorry, trying to post the code but keep getting a duplicate post warning. Can you see it?
        Hi, I am posting the code but don't see it displaying. This isn't through a lack of hiding code from you I am just battling to find my way around the site. Please be patient until I get the hang of it.
        have you managed to get my code?
Re^2: Hash of arrays
by perlloz (Initiate) on Dec 28, 2012 at 08:07 UTC
    Sorry, new here, I used the print statements from the previous posters suggestions. The actual data being pushed into the HOA is a lot of code and is an AD query so it wouldn't compile. What I end up with is a key of Bob and an array containing groups: domain users, testing, server team etc
    push (@{$newgrouphash{"$newdn"} },"$newgroup"); foreach $newdn (sort keys %newgrouphash ) { print "Name:$newdn\n\t"; foreach $group ( sort @{$newgrouphash{$newdn}} ) { + if (!($group =~ /CN=Domain Users/i)) { # print "$group, "; + $res = `dsmod group $group -rmmbr \"$newdn\"`; + print "$res\n";

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2014-07-30 23:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (241 votes), past polls