This seems to work:<div><br></div><div><span style>This seems to work:</span></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif"><br></font><div style>
> perl <a href="http://create_hier.pl/" target="_blank" style="color:rgb(17,85,204)">create_hier.pl</a> small.txt 11 10 12</div><div style><br></div><div style><div>use strict;</div><div>use Data::Dumper;</div><div><br>
</div><div>my %h;</div><div>$h{ROOT} = {};</div><div><br></div><div>my @i = splice @ARGV, 1, $#ARGV;<span style="white-space:pre-wrap"> </span># remove the indexes from command line</div><div><br></div><div>while (<>) {</div>
<div><br></div><div><span style="white-space:pre-wrap"> </span>my @f = split(/\|/);</div><div><span style="white-space:pre-wrap"> </span>my $p = $h{ROOT};</div><div><br></div><div><span style="white-space:pre-wrap"> </span>foreach my $i (@i) {</div>
<div><br></div><div><span style="white-space:pre-wrap"> </span>my $key = $f[$i];</div><div><br></div><div><span style="white-space:pre-wrap"> </span>if (! exists $p->{$key}) {</div><div><span style="white-space:pre-wrap"> </span>$p->{$key} = {};</div>
<div><span style="white-space:pre-wrap"> </span>}</div><div><br></div><div><span style="white-space:pre-wrap"> </span>$p = $p->{$key};</div><div><br></div><div><span style="white-space:pre-wrap"> </span>}<span style="white-space:pre-wrap"> </span></div>
<div>}</div><div><br></div><div>print Dumper %h;</div><div><br></div><div>my $counter = 0;</div><div>unwrap($counter, \%h);</div><div><br></div><div>sub unwrap {</div><div><br></div><div><span style="white-space:pre-wrap"> </span>my ($parent, $hash) = @_;</div>
<div><br></div><div><span style="white-space:pre-wrap"> </span>foreach my $key (keys %$hash) {</div><div><span style="white-space:pre-wrap"> </span>$counter++;</div><div><span style="white-space:pre-wrap"> </span>print join("\t", $counter, $parent, $key), "\n";</div>
<div><span style="white-space:pre-wrap"> </span>unwrap( $counter, $hash->{$key});</div><div><span style="white-space:pre-wrap"> </span>}</div><div>}</div><div><br></div><div><div>Giving me output like (I shortened it due to the size):</div>
<div><br></div><div><div>$VAR1 = 'ROOT';</div><div>$VAR2 = {</div><div> 'LA' => {</div><div> 'WALKER' => {</div><div> '70785' => {}</div>
<div> },</div><div> 'BOUTTE' => {</div><div> '70039' => {}</div><div> },</div><div> 'RAYNE' => {</div>
<div> '70578' => {}</div><div> },</div><div> 'BATON ROUGE' => {</div><div> '70805' => {}</div>
<div> }</div><div> },</div></div></div><div>....</div><div><div> 'NV' => {</div><div> 'LAS VEGAS' => {</div><div> '89149' => {},</div>
<div> '89104' => {}</div><div class="im" style="color:rgb(80,0,80)"><div> }</div><div> },</div><div> 'OR' => {</div>
<div> 'WARRENTON' => {</div></div><div> '97146' => {}</div><div> },</div><div> 'SALEM' => {</div>
<div> '97305' => {},</div><div> '97302' => {},</div><div> '97301' => {}</div><div> }</div>
<div> }</div><div> };</div><div>1<span style="white-space:pre-wrap"> </span>0<span style="white-space:pre-wrap"> </span>ROOT</div><div>2<span style="white-space:pre-wrap"> </span>1<span style="white-space:pre-wrap"> </span>LA</div>
<div>3<span style="white-space:pre-wrap"> </span>2<span style="white-space:pre-wrap"> </span>WALKER</div><div>4<span style="white-space:pre-wrap"> </span>3<span style="white-space:pre-wrap"> </span>70785</div><div>5<span style="white-space:pre-wrap"> </span>2<span style="white-space:pre-wrap"> </span>BOUTTE</div>
<div>6<span style="white-space:pre-wrap"> </span>5<span style="white-space:pre-wrap"> </span>70039</div><div>7<span style="white-space:pre-wrap"> </span>2<span style="white-space:pre-wrap"> </span>RAYNE</div><div>8<span style="white-space:pre-wrap"> </span>7<span style="white-space:pre-wrap"> </span>70578</div>
<div>9<span style="white-space:pre-wrap"> </span>2<span style="white-space:pre-wrap"> </span>BATON ROUGE</div><div>10<span style="white-space:pre-wrap"> </span>9<span style="white-space:pre-wrap"> </span>70805</div></div>
<div>...</div><div><div>219<span style="white-space:pre-wrap"> </span>1<span style="white-space:pre-wrap"> </span>NV</div><div>220<span style="white-space:pre-wrap"> </span>219<span style="white-space:pre-wrap"> </span>LAS VEGAS</div>
<div>221<span style="white-space:pre-wrap"> </span>220<span style="white-space:pre-wrap"> </span>89149</div><div>222<span style="white-space:pre-wrap"> </span>220<span style="white-space:pre-wrap"> </span>89104</div><div>
223<span style="white-space:pre-wrap"> </span>1<span style="white-space:pre-wrap"> </span>OR</div><div>224<span style="white-space:pre-wrap"> </span>223<span style="white-space:pre-wrap"> </span>WARRENTON</div><div>225<span style="white-space:pre-wrap"> </span>224<span style="white-space:pre-wrap"> </span>97146</div>
<div>226<span style="white-space:pre-wrap"> </span>223<span style="white-space:pre-wrap"> </span>SALEM</div><div>227<span style="white-space:pre-wrap"> </span>226<span style="white-space:pre-wrap"> </span>97305</div><div>
228<span style="white-space:pre-wrap"> </span>226<span style="white-space:pre-wrap"> </span>97302</div><div>229<span style="white-space:pre-wrap"> </span>226<span style="white-space:pre-wrap"> </span>97301</div></div><div>
<br></div></div></div>