Because "foo\n" =~ /foo$/, I tend to explain it differently. ^ and $ are begin and end of a line, but /m modifies the meaning of "line".
I don't see how that explanation can work, though. $ only ever means EOL when /m is operative. You can see that by running:
"foo\nbar" =~ /foo$/ or print "Didn't match EOL :-(\n";
I see that you've updated the sheet to just:
$ end (before \n)
Can I suggest that (if you also used the suggestion at the end of this node) that could just become:
^ start of str
$ end of str (incl \n)
Those descriptions would be sufficient if you were also more explicit about /s
. Explaining that they mean singleline
respectively doesn't really help newbies remember which is which or what each of them does. Heck, if uri
hadn't taught me the mnemonic that /s
changes a S
ingle metacharacter (i.e. .
) whilst /m
ultiple metacharacters (i.e. ^
), then I still wouldn't be able to remember which is which myself!
So maybe you'd like to consider changing them to something like:
/m ^ = SOL, $ = EOL
/s . matches \n too