---
name: "NanoMsg::Raw::Message"
section: "3pm"
platform: "linux"
package: "libnanomsg-raw-perl"
version: "0.10-3+b4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/NanoMsg::Raw::Message"
---

# NanoMsg::Raw::Message(3pm)

Message buffer for NanoMsg::Raw

## NAME

NanoMsg::Raw::Message - Message buffer for NanoMsg::Raw

## SYNOPSIS

```
    use NanoMsg::Raw;
    {
        my $msg = nn_allocmsg(3, 0);
        $msg->copy('foo');
        nn_send($sock, $msg);
    }
    {
        nn_recv($sock, my $buf);
        warn $buf;
    }
```

## DESCRIPTION

Instances of this class represent a message buffer allocated by nanomsg. New empty buffers can be allocated using `"nn_allocmsg"`. Both `"nn_recv"` and `"nn_recvmsg"` can be used to allocate buffers initialised with the contents of a received message.

`"NanoMsg::Raw::Message"`s can be used to send and receive data in a zero-copy fashion.

When using a message instance as a string, its overloading will produce a string containing a copy of the buffer content.

A string pointing to the actual buffer content, without having to create a copy of it, can be obtained by dereferencing the message instance as a scalar.

- copy($data)

  ```
      $msg->copy('foo');
  ```

  Copies `$data` to the beginning of the buffer. If the data is larger than the space allocated for the buffer, an exception will be thrown.

## SEE ALSO

NanoMsg::Raw
