The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MCE::Shared::Scalar - Scalar helper class

VERSION

This document describes MCE::Shared::Scalar version 1.699_012

SYNOPSIS

   # non-shared
   use MCE::Shared::Scalar;

   my $var = MCE::Shared::Scalar->new( $val );

   # shared
   use MCE::Shared;

   my $var = MCE::Shared->scalar( $val );

   # oo interface
   $val = $var->set( $val );
   $val = $var->get();
   $len = $var->len();

   # sugar methods without having to call set/get explicitly
   $val = $var->append( $string );            #   $val .= $string
   $val = $var->decr();                       # --$val
   $val = $var->decrby( $number );            #   $val -= $number
   $val = $var->getdecr();                    #   $val--
   $val = $var->getincr();                    #   $val++
   $val = $var->incr();                       # ++$val
   $val = $var->incrby( $number );            #   $val += $number
   $old = $var->getset( $new );               #   $o = $v, $v = $n, $o

DESCRIPTION

Helper class for MCE::Shared.

API DOCUMENTATION

This module may involve TIE when accessing the object via scalar dereferencing. Only shared instances are impacted if doing so. Although likely fast enough for many use cases, use the OO interface if better performance is desired.

new ( [ value ] )

Constructs a new object. Its value is undefined when value is not specified.

   # non-shared
   use MCE::Shared::Scalar;

   $var = MCE::Shared::Scalar->new( "foo" );
   $var = MCE::Shared::Scalar->new;

   # shared
   use MCE::Shared;

   $var = MCE::Shared->scalar( "bar" );
   $var = MCE::Shared->scalar;
set ( value )

Preferably, set the value via the OO interface. Otherwise, TIE is activated on-demand for setting the value. The new value is returned in scalar context.

   $val = $var->set( "baz" );
   $var->set( "baz" );
   ${$var} = "baz";
get

Likewise, obtain the value via the OO interface. TIE is utilized for retrieving the value otherwise.

   $val = $var->get;
   $val = ${$var};
len

Returns the length of the value. It returns the undef value if the value is not defined.

   $len = $var->len;
   length ${$var};

SUGAR METHODS

This module is equipped with sugar methods to not have to call set and get explicitly. The API resembles a subset of the Redis primitives http://redis.io/commands#strings without the key argument.

append ( value )

Appends a value at the end of the current value and returns its new length.

   $len = $var->append( "foo" );
decr

Decrements the value by one and returns its new value.

   $num = $var->decr;
decrby ( number )

Decrements the value by the given number and returns its new value.

   $num = $var->decrby( 2 );
getdecr

Decrements the value by one and returns its old value.

   $old = $var->getdecr;
getincr

Increments the value by one and returns its old value.

   $old = $var->getincr;
getset ( value )

Sets the value and returns its old value.

   $old = $var->getset( "baz" );
incr

Increments the value by one and returns its new value.

   $num = $var->incr;
incrby ( number )

Increments the value by the given number and returns its new value.

   $num = $var->incrby( 2 );

CREDITS

The implementation is inspired by Tie::StdScalar.

INDEX

MCE, MCE::Core, MCE::Shared

AUTHOR

Mario E. Roy, <marioeroy AT gmail DOT com>