On Thu, 24 Oct 2002, Michael Lazzaro wrote: : $str1 ~ $str2 # $str1 =~ m/$str2/
That would be a smart match, not m/$str2/. : $str ~ /foo/ # $str1 =~ m/foo/ That would work. : $str2 = ($str ~ /foo/bar/); # perform subst, assign result to $str2 : : $str ~= /foo/bar/; # perform subst, assign result to $str That can't work without the "s". The lexer can't tell if "bar" is a string or an operator. But the ~= is a cute trick. Not sure if it's more than that though. Gotta worry about s/// in a boolean context, for instance. And the current idiom ($str2 = $str1) =~ s/foo/bar; is not much longer than yours, though your parens are, I think, optional, while mine aren't. But we also have to balance it against the desirability of using ~ for concatenation. Requiring whitespace around _ is a bit of a rationalization after the fact, and ~ escapes that problem in most cases. Plus, smart matching is such a heavyweight, notionally speaking, that it really deserves a larger operator. Since there's no such thing as a "logical concat", we might get away with using ~~, and then people wouldn't have to wonder whether it was ~= or =~. Or we could make it ===. That would pretty much rule out having the corresponding assignment operator though... Or we could leave it =~ for old times sake, and make people learn the difference from ~=. Or go with something new: $a :~ $b $a =~= $b $a =? $b $a <?> $b $a <~> $b $a >< $b $a ::: $b $a match $b $a like $b $a vs $b $a v $b If it is, in fact, a topicalizer, then the Japanese would very naturally parse a postpositional particle: $a wa $b Or we could go with Valspeak: $a is like $b and stuff At the moment I like "like" the best, actually... Larry