Did I miss your examples or did you add them later? If all of the fragments in your small array will match the end of an item in the large array then you should anchor the search at the end with a $ like you had in your grep.
push @selected, $item if any { $item =~ /\Q$_\E$/ } @small;