my %hash =( 'script' => 'foo.pm', 'params' => { 'err' => '99', 'FILE' => 'fileA' }, 'par_global' => { 'err' => '99', 'err' => '20', 'FILE_READ' => 'fileB', }, 'testset' => ['test1'] );
I am extracting key value pairs from %hash, but in case if key=values are similar, it should pick only one entry of it rather than picking both the entries.
Output from my code FILE=fileA err=99 script:foo.pm foo.pm FILE_READ=fileB err=99 err=20 testset:test1
Output required FILE=fileA err=99 script:foo.pm foo.pm FILE_READ=fileB err=20 testset:test1
Should list only one entry of err=99 rather than two entries
Code used
foreach my $key (keys %hash) { if ( ref $hash{$key} ne 'HASH' && ref $hash{$key} ne 'ARRAY' ) { print"$key:$hash{$key}\n"; if( (defined $key) && ($key eq 'script') ) { print"$hash{$key}\n"; } } if( ref $hash{$key} eq 'HASH' ) { foreach my $k (keys %{$hash{$key}}) { print"$k=$hash{$key}{$k}\n"; } } elsif( ref $hash{$key} eq 'ARRAY' ) { print"$key:$hash{$key}[0]\n"; } }
In reply to Remove similar key=value pair from HOH by vaibhav07
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |