Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 311
  • Last Modified:

Hashf a hash of a hash of a hash

Hi,
I need to write a code that sorts filenames under different environements.

The heirarchy is as shown below-
Environment
Plan (around 50 palns)
Chapter (over 300)
Milestone (1,2,3,4)
Platform (A,B)
Owner(around 30)
Filenames (over 10000)

There are several plans. And each plan has several chapters. A plan and chapter of the same name can be present in another environment.
Now each chapter has filenames with the details of their owner and the milestone and platforms they are related to. Despite having same names the chapters can and will have different content in different environment.
I need to access these filenames and print them out in the followwing format

Plan: the plan its accessing
Chapter: the chapter under that plan
Owner:Default owner (there can be multiple owners)
Platfrom: Default platform
Env : Default environemt

(milestone=1 , env= if its not the default env display the other env here)
#print files relevant to milestone 1 under that plan under that chapter
filename1
filename2
filename3
filename4
(milestone=2 , env= if its not the default env display the other env here)
filename5
filename6
filename7
(milestone=3 , env= if its not the default env display the other env here)
filename8
(milestone=4 , env= if its not the default env display the other env here)
filename9
filename10
filename11
filename12
filename13
filename14

If a plan has multiple chapters, it should print out multiple similar output for all chapters.
And it shoul depict change in environement, owner or platform in the milestone brackets.

Btw i'm sorting the data in excel and accessing an excel file. So first i dump the data in excel sort it and then access it. So everything is in an order.

Any help would be appreciated.
thanks
0
erum87
Asked:
erum87
  • 9
  • 6
1 Solution
 
erum87Author Commented:
I need to create hashes of hashes for this. Something like $hash{$plan}{$chap}{$mlst}{$env}.....
0
 
ozoCommented:
Do you have a question about creating $hash{$plan}{$chap}{$mlst}{$env}?
Is it not working the way you expect?
0
 
erum87Author Commented:
Well i have issues with creating a hash, yes.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
erum87Author Commented:
And then also using it in foreach since it has so many layers to it
0
 
ozoCommented:
What issues are you having?
0
 
erum87Author Commented:
lets start with creating a multilayer hash. Do i need to declare it. If yes then how do i make it loop through plan first and within that plan, all the chapters and within that chapter all the testnames as per wrt milestones and environments.
0
 
ozoCommented:
foreach $plan ( keys %hash ){
     foreach $chap ( keys %{$hash{$plan}} ){
          foreach $mist ( keys %{$hash{$plan}{$chap}} ){
                 foreach $env ( keys %{$hash{$plan}{$chap}{$mlst}} ){
                        print "\$hash{$plan}{$chap}{$mlst}{$env} = $hash{$plan}{$chap}{$mlst}{$env}\n";
                }
          }
      }
}
0
 
ozoCommented:
You do not need to declare it.
0
 
erum87Author Commented:
Thanks :)
Another doubt
i'm creating an array fro plan, chapter, milestone and then looping through it.
foreach $plan(@plan){
    foreach $chap(@chapter){
        foreach $mlst(@mlst){
                       
(Do i include the hashes here ? )
                      }
              }
}
0
 
erum87Author Commented:
And why did you create a hash reference in the print statement ?
0
 
ozoCommented:
If you already have the keys in arrays, then you don't need to get them from the hash
0
 
erum87Author Commented:
The reason i wanted to use hashes was tomake the keys unique, since there are multiple occurances of plan and chapters etc. So where do I declare it so that the hash can access it.
0
 
ozoCommented:
I did not create a hash reference in the print statement, I quoted the $ so it would print literally instead of interpolating a variable
You may want to declare
  my %hash;
or
  our %hash;
especially if you are under
  use strict refs;
0
 
erum87Author Commented:
I've requested that this question be closed as follows:

Accepted answer: 500 points for ozo's comment #37803998
Assisted answer: 0 points for erum87's comment #37803988

for the following reason:

helped me understand how to really access and lp thru layers of hashes :)
0
 
erum87Author Commented:
want more solutions
0

Featured Post

[Webinar On Demand] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 9
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now