erum87
asked on
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
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
Do you have a question about creating $hash{$plan}{$chap}{$mlst} {$env}?
Is it not working the way you expect?
Is it not working the way you expect?
ASKER
Well i have issues with creating a hash, yes.
ASKER
And then also using it in foreach since it has so many layers to it
What issues are you having?
ASKER
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.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You do not need to declare it.
ASKER
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 ? )
}
}
}
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 ? )
}
}
}
ASKER
And why did you create a hash reference in the print statement ?
If you already have the keys in arrays, then you don't need to get them from the hash
ASKER
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.
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;
You may want to declare
my %hash;
or
our %hash;
especially if you are under
use strict refs;
ASKER
ASKER
want more solutions
ASKER