in reply to $^M What is it?

According to perlman:perlvar you generally don't.
-------------
$^M
By default, running out of memory it is not trappable. However, if compiled for this, Perl may use the contents of $^M as an emergency pool after die()ing with this message. Suppose that your Perl were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc. Then

$^M = 'a' x (1<<16);

would allocate a 64K buffer for use when in emergency. See the INSTALL file for information on how to enable this option. As a disincentive to casual use of this advanced feature, there is no the English manpage long name for this variable.
----------------
So it is something used just for emergencies and should have no need to appear in general code except possibly mission-critical apps on a machine which is short on memory (so you have enough to continue no matter what other apps are eating memory). Though that scenario should be avoided.