'--' isn't used to 'chop off' any characters - when used, as BrowserUk implied earlier, it flags the end of the CLI option list to the script/executable and thus whatever follows (in this case the ^M) is/are arguments to the script/executable.
in reply to Re^2: /usr/bin/perl^M: bad interpreter:
in thread /usr/bin/perl^M: bad interpreter:
The 'classic' usage is when grep'ping for a string containing dash(es) &/or minus(es) e.g. grep -- this-string some_file - which tells grep that 'this-string' is a string and not a malformed CLI option.
A user level that continues to overstate my experience :-))