Ben Tilly wrote:

# >|PPS Coming from Perl I find it disconcerting to see
# >|Ruby's /m flag combine options that I am used to seeing
# >|separately as /s and /m.
# >
# >In Perl, it is possible to specify /s and /m at the same time.  It
# >probably is feature rich, but I find it disconcerting.
# 
# <ramble>
# 
# The naming is disconcerting, but they do unrelated
# things.  /m affects what ^ means.  /s affects what .
# means.  They affect them in opposite directions.
# 
# The default behaviour in Perl is that ^ acts like a
# string is a single line, and . acts like returns are
# not part of the string.  /s changes . to act like you
# have a single string with embedded returns.  /m
# changes ^ to act like you have multiple logical lines.
# 
# If you want to combine the options into one, the least
# surprise for me would be to switch between /s and /m
# behaviour, not / to /sm.  That is make . and ^ both
# agree on whether the string has one or many lines in
# it.  OTOH that will make the default behaviour of Ruby
# different than the defaults of most other languages,
# surprising people again.
# 
# I suspect the *minimum* surprise would be to by default
# act like Perl's /m - so . does not match \n and ^ will
# match at the beginning of a line.  (Thereby making
# Ruby act a lot like standard Unix utilities.)  Then have
# a /s option.  But that would probably break a lot of
# code. :-(
# 
# </ramble>
# 
# I don't know that there is a good answer...  But Perl's
# answer is the one I am used to.

I think quasi-Unix and quasi-Perl compatibility make lots of sense here. 

The world is full of multilingual programmers, and I think it is a good 
idea to avoid arbitrary differences when it comes to very similar sorts of 
features unless there is a huge benefit involved, which isn't the case 
here. (Except for the almost always nasty backwards compatibility with 
existing code problem.)

Conrad Schneiker
(This note is unofficial and subject to improvement without notice.)