in reply to Mojo::DOM help

You're using Perl's or, which is taking the logical combination of those three strings before calling the find method, and since the first string is a true value, the only thing you're passing to the find method is the first string. See Mojo::DOM::CSS's selectors: "or" is a comma, and "and" for attributes is [...][...]. But note that class gets special treatment, and you can simply use the .class selector to match classes, stringing them together for an "and". Also note the order of classes in the class attribute can change, which the following shows, but if you really want exact string matches you can use the [class="value"] selectors.

use warnings; use 5.012; use Mojo::DOM; my $dom = Mojo::DOM->new(<<'HTML'); <div> <div class="LC20lb DKV0Md"> matches </div> <div class="DKV0Md"> no match </div> <div class="DKV0Md LC20lb"> matches </div> <div class="BNeawe vvjwJb AP7Wnd"> matches </div> <div class="BNeawe AP7Wnd vvjwJb"> matches </div> <div class="AP7Wnd vvjwJb BNeawe"> matches </div> <div class="BNeawe AP7Wnd"> no match </div> <div class="CVA68e qXLe6d"> matches </div> <div class="qXLe6d CVA68e"> matches </div> <div class="qXLe6d"> no match </div> </div> HTML $dom->find('.LC20lb.DKV0Md, .BNeawe.vvjwJb.AP7Wnd, .CVA68e.qXLe6d') ->each(sub { say });