How can I access $m (the request object) from outside a component, e.g. inside a regular class?

When using multiple component roots, is there a way to explicitly call a component in a specific root?

Multiple component roots were designed to work just like Perl's @INC. A given component path matches exactly one file, the first file found in an ordered search through the roots. There is no way to explicitly ask for a file in a specific root.

Why is Mason so slow with standard CGI?

Under standard CGI you must load all modules and initialize your environment with every request. Mason's startup cost (mostly due to Moose) will make this particularly sub-optimal. Ask yourself whether you absolutely have to use CGI, and if not, switch to a persistent solution like mod_perl or Fast CGI or Starman.

How do I access GET or POST arguments?

GET and POST arguments are automatically parsed and passed to the page component. So you can get at GET/POST data by declaring the appropriate attributes and/or consulting $.args. See Run parameters in the PSGIHandler documentation.

I'm passing multiple values for a key in a query string, why is only one value showing up?

You need to declare the corresponding attribute as an ArrayRef. See Run parameters in the PSGIHandler documentation.