Rod Adams <[EMAIL PROTECTED]> writes: > $re1 = /^ <-[x]>* x <-[x]>* $/; # match a string with exactly one > 'x' in it. > $re2 = /^ <-[y]>* y <-[y]>* $/; # ditto 'y' > $re3 = /^ <-[z]>* z <-[z]>* $/; # ditto 'z'
> $re7 = none($re1, $re2, $re3); # matches if there are 0 or 2+ of > each of x,y,z. > #7 I have no idea how to attack as a single RE in anything close to > approaching elegance. Depending on your idea of elegance ... anchored zero-width negative lookahead: $re7 = qr/^ (?!= $re1 | $re2 | $re3 ) /x; Oh right. Perl6. Well, if I understand "<$re1>" correctly, I think this is what it will look like: $re7 = /^ <!before <$re1> | <$re2> | <$re3> > /; I still want junctions, but I also still am not quite sure how they will behave. For instance, I wonder how this would autothread or not: my sub f (Int $x) { if $x { return 0, 1, $x; } else { return 0, 1; } } my $j = 0 | 7; my @a = (1, f($j), 0); - How many elements are there in @a? 3? 5? 4|5? - What is @a[-1]? 0? any(0)? 0|undef? - What is @a[4]? undef? 0|undef? 0? Na�vely, I would expect that setting of @a be equivalent to this: my @a = (1, ([0,1]|[0,1,7]), 0); And so from the callers perspective, &f, which usually returns two or three values, suddenly returns a single (junctive) value. New semantics for &f, courtesy of autothreading. I expect this is too na�ve. But what am I missing? Eirik -- All bridge hands are equally likely, but some are more equally likely than others. -- Alan Truscott