http://qs1969.pair.com?node_id=660451

manav_gupta has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks

I have a file format like so:
200326951|_|rel_Access1|_|200315482|_| 200326951|_|rel_Access1|_|200315786|_| 200326951|_|rel_Access2|_|200315482|_| 200326951|_|rel_Access2|_|200315786|_|
I want to read this file and build a hash. I have the following code:
my %hash; open(CMD1, "< test.txt"); while (<CMD1>) { my @elts = split(/\|_\|/, $_, -1); my $p = \\%hash; $p = \( ${$p}->{$_} ) for @elts; } use Data::Dumper; print Dumper(\%hash);
However, that gives me a hash like so:
$VAR1 = { '200326951' => { 'rel_Access2' => { '200315482' => { '' => undef }, '200315786' => undef }, 'rel_Access1' => { '200315482' => { '' => undef }, '200315786' => { '' => undef } } } };
What can I do to get a hash like the following:
$VAR1 = { '200326951' => { 'rel_Access2' => '200315786' }, 'rel_Access1' => '200315482' } };
Basically, I'm looking to discard duplicate values. This is a slightly tricky example, since in this one, the second line gets discarded because the second field (rel_Access1) was already present in the first line, and the third line gets discarded because the third field (200315482) was present in the result..

Many thanks!