Build a 'reverse' hash of category to code.
#!perl
use strict;
use warnings;
use Data::Dumper;
my %categories = ("FUR-BO 10001798" => 'Furniture',
"FUR-CH 10000454" => [ 'Furniture' , 'Chairs'],
"OFF-LA 10000240" => [ 'Office Supplies' , 'Labels']
+,
"OFF-ST 10000107" => [ 'Office Supplies' , 'Storage'
+],
"OFF-AR 10003056" => [ 'Office Supplies' , 'Art'],
"TEC-PH 10001949" => 'Technology Phones',
);
# build reverse hash text=>code
my %code = ();
for my $code (keys %categories){
my $cat = $categories{$code};
if ( ref($cat) eq 'ARRAY' ){
$cat = join ' ',@$cat;
}
if (exists $code{$cat}){
die "Duplicate code for $cat\n";
} else {
$code{$cat} = $code
};
}
print Dumper \%code;
my @items = ('Furniture',
'Furniture Chairs',
'Office Supplies Storage',
'Office Supplies Art',
'Office Supplies Labels');
search($_) for @items;
sub search {
my $text = shift;
printf "Code for %-30s is %s\n",$text,$code{$text};
}
poj