my $matches = 0; foreach my $item (@items) { $matches++ if grep( $item eq $_, @list ); } print "All match!" if $matches == @items; #### my %st = map { $_ => undef } @list; my $matches = 0; foreach my $item (@items) { $matches++ if exists $st{$item}; } print "All match!" if $matches == @items; #### use List::AutoST; my $list = List::AutoST->new(); # these appear to behave like normal push @list, $some, $values, $here; $list[1] = $value2; # but then... print "Ok!" if $list->has('this value'); # or (also via overload) print "Ok!" if exists $list{'this value'};