Multisplit

sub multisplit($str, @seps) { $str.split(/ ||@seps /, :v) }

my @chunks = multisplit( 'a!===b=!=c==d', < == != = > );

# Print the strings.
say @chunks».Str.perl;

# Print the positions of the separators.
for grep Match, @chunks -> $s {
    say "  $s   from $s.from() to $s.to()";
}

Output:

("a", "!=", "", "==", "b", "=", "", "!=", "c", "==", "d")
  !=    from 1 to 3
  ==    from 3 to 5
  =     from 6 to 7
  !=    from 7 to 9
  ==    from 10 to 12

Using the array @seps in a pattern automatically does alternation. By default this would do longest-term matching (that is, | semantics), but we can force it to do left-to-right matching by embedding the array in a short-circuit alternation (that is, || semantics). As it happens, with the task's specified list of separators, it doesn't make any difference.