Leon Timmermans


SysV::SharedMem - SysV Shared memory made easy


version 0.010


 use SysV::SharedMem;

 shared_open my $mem, '/path', '+>', size => 4096;
 vec($mem, 1, 16) = 34567;
 substr $mem, 45, 11, 'Hello World';


This module maps SysV shared memory into a variable that can be read just like any other variable, and it can be written to using standard Perl techniques such as regexps and substr, as long as they don't change the length of the variable.


shared_open($var, $filename, $mode, %options)

Open a shared memory object named $filename and attach it to $var. The segment that will be opened is determined with this order of precedence: $options{id}, $options{key}, $filename, IPC_PRIVATE (create a new anonymous segment).

$filename must be the path to an existing file if defined. $mode determines the read/write mode; it works the same as in open.

Beyond that it can take a number of optional named arguments:

  • id

    The option is defined is specifies the shared memory identifier that will be opened. It overrides both $options{key} and $filename.

  • key

    If $options{id} is undefined this parameter is used as the key to lookup the shared memory segment.

  • size

    This determines the size of the map. Must be set if a new shared memory object is being created.

  • perms

    This determines the permissions with which the segment is created (if $mode is '>' or '+>'). Default is 0600.

  • offset

    This determines the offset in the file that is mapped. Default is 0.

  • proj_id

    The project id, used to ensure the key generated from $filename is unique. Only the lower 8 bits are significant and may not be zero. Defaults to 1.


Marks a memory object to be removed. Shared memory has kernel persistence so it has to be explicitly disposed of. One can still use the object after marking it for removal.


Retrieve the properties of the shared memory object. It returns a hashref with these members:

  • uid

    Owner's user ID

  • gid

    Owner's group ID

  • cuid

    Creator's user ID

  • cgid

    Creator's group ID

  • mode

    Read/write permission

  • segsz

    Size of segment in bytes

  • lpid

    Process ID of last shared memory operation

  • cpid

    Process ID of creator

  • nattch

    Number of current attaches

  • atime

    Time of last attachment

  • dtime

    Time of last detachment

  • ctime

    Time of last of control structure

shared_chmod($var, $modebits)

Change the (lower 9) modebits of the shared memory object.

shared_chown($var, $uid, $gid = undef)

Change the owning uid and optionally gid of the shared memory object.


Detach the shared memory segment from this variable.


Return the identifier for this shared memory segment


Leon Timmermans <leont@cpan.org>


This software is copyright (c) 2010 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.