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 });

In reply to Re: Mojo::DOM help by haukex
in thread Mojo::DOM help by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.