Hi,
> my $prefix_search_list = '03S,04S'; > my @prefix_array = split /\,/,$prefix_search_list; > my %prefix_hash = map {$_ => 1 } @prefix_array; > > #compare 05S to 03S and 04S > my $input_field = "05S885858"; #should not match > 1. using stricts and warnings pragma, shows clearly that there is nothing like the scalar variable "$prefix_hash". You only have a hash variable with the name "%prefix_hash". Am sure you will appreciate why one would ask that such pragma been turned ON. 2. Using, a "for or foreach" loop, one could compare each of the hash key with the $input_field. like so: #compare 05S to 03S and 04S my $input_field = "05S885858"; #should not match foreach my $prefix_match ( keys %prefix_hash ) { if ( $input_field =~ /$prefix_match/ ) { print "$input_field is found in hash\n"; } else { print "$input_field is not found\n"; } } #compare 03S to 03S and 04S foreach my $prefix_match ( keys %prefix_hash ) { $input_field = "03S84844"; #should match if ( $input_field =~ /$prefix_match/ ) { print "$input_field is found in hash\n"; } else { print "$input_field is not found\n"; } } Below is the full script: use warnings; use strict; my $prefix_search_list = '03S,04S'; my @prefix_array = split /\,/, $prefix_search_list; my %prefix_hash = map { $_ => 1 } @prefix_array; #compare 05S to 03S and 04S my $input_field = "05S885858"; #should not match foreach my $prefix_match ( keys %prefix_hash ) { if ( $input_field =~ /$prefix_match/ ) { print "$input_field is found in hash\n"; } else { print "$input_field is not found\n"; } } #compare 03S to 03S and 04S foreach my $prefix_match ( keys %prefix_hash ) { $input_field = "03S84844"; #should match if ( $input_field =~ /$prefix_match/ ) { print "$input_field is found in hash\n"; } else { print "$input_field is not found\n"; } } Hope this helps. -- Tim