my @paths = ( "/colours/paprika/1/good/red", "/colours/paprika/1/bad/green", "/colours/paprika/2/good/yellow", "/colours/paprika/2/bad/brown", "/colours/banana/yellow" ); my %invert = ( colours=>[0,1,2,3,4], paprika=>[0,1,2,3], banana=>[4], good=>[0,2], bad=>[1,3], red=>[0], green=>[1], yellow=>[2,4], brown=>[3], );