---
name: "Mouse::XS"
section: "3pm"
platform: "linux"
package: "perl-mouse"
version: "2.6.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Mouse::XS"
---

# Mouse::XS(3pm)

A Mouse guts in XS

## NAME

Mouse::XS - A Mouse guts in XS

## VERSION

This document describes Mouse version 2.0.0

## DESCRIPTION

Mouse has an optional XS implementation, which is automatically built and used if available. According to benchmarks, this is about 2 times faster than Mouse::PurePerl.

### INSTALL

The XS implementation are selected by default, but you can force it by passing the `"--xs"` option to *Makefile.PL*.

```
    perl Makefile.PL --xs
```

If you do not want to build the XS implementation, you can pass the `"--pp"` option to *Makefile.PL*.

```
    perl Makefile.PL --pp
```

Or if you use `"cpanm"` (\>= 1.7), you can give `"--pp"` option to `"cpanm"`.

```
    cpanm --pp Mouse
```

### The MOUSE\_PUREPERL (or PERL\_ONLY) environment variable

It can be used to enable the use of Mouse::PurePerl in order to test and debug programs that use Mouse.

## CAVEAT

There are some Mouse::XS specific features.

- Mutating references to the return values of getters

  When you take a reference from Mouse getters, like `"$ref = \$obj->foo"`, the `$ref` refers `"\$obj->{foo}"`. That is, mutating `$$ref` also alters `"$obj->{foo}"`. The behavior may confuse you so you'd better avoid to take a reference directly from getters.

  See \<https://rt.cpan.org/Ticket/Display.html?id=82945\> for details.

## DEPENDENCIES

The XS implementation requires Perl 5.10.1 or later, and a C compiler.

## SEE ALSO

Mouse

Mouse::PurePerl
