On Sat, Jul 23, 2005 at 03:03:24AM +0900, tsuraan wrote:
> I guess I meant /.../s, which one site said was " '.' matches newline
> mode", but anyhow, that works great.  Thanks!

WARNING!! Ruby and Perl are very different here; don't try to follow Perl
documentation on regular expressions.

Ruby:   /foo/       =   Perl:    /foo/m

Ruby:   /foo/m      =   Perl:    /foo/ms

In Ruby, /foo/s means match the string with Shift-JIS (Japanese encoding),
which is quite likely not what you want :-)

(Unfortunately, I don't think ri documents regexp patterns and modifiers,
unlike perl's "man perlre". I end up referring to the Pickaxe book p324 for
this)

There is no way to turn off the equivalent of Perl's /m flag. This is
important if you are using regexps to validate data: ^ and $ do not just
match the start and end of string, they also match at newlines (\n).

    foo.untaint if foo =~ /^[a-z]*$/       # DANGEROUS

    foo.untaint if foo =~ /\A[a-z]*\z/     # correct

Regards,

Brian.