MCE::Sh...::Scalar(3)

πŸ“¦
version 1.893 Β· 4 versions
, in epel 10

✨ NAME ✨

okay so this is the MCE::Sh...::Scalar(3) page from the User Contributed Perl Documentation, and it’s literally all about MCE::Shared::Scalar β€” a scalar helper class for use as a standalone or managed by MCE::Shared. That’s the vibe, bestie. πŸ’…

🌸 VERSION 🌸

This document describes MCE::Shared::Scalar version 1.893. Write it down, no cap. 🫢

πŸ¦‹ DESCRIPTION πŸ¦‹

A scalar helper class for use as a standalone or managed by MCE::Shared. It’s giving exactly what it says on the tin, and honestly? Iconic. ✨

πŸŽ€ SYNOPSIS πŸŽ€

bestie, here are the literal moves: non-shared or local construction for a single process, construction for sharing with other threads and processes, scalar-like dereferencing, the OO interface, and the included sugar methods. πŸ“

        # non-shared or local construction for use by a single process

        use MCE::Shared::Scalar;

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

        # construction for sharing with other threads and processes

        use MCE::Shared;

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

        # scalar-like dereferencing

        my $val = ${ $var };
        ${ $var } = $val;

        # OO interface

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

        # included, 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

For normal scalar behavior, the TIE interface is supported. That part is important, bestie. 🫢

        # non-shared or local construction for use by a single process

        use MCE::Shared::Scalar;

        tie my $var, "MCE::Shared::Scalar";

        # construction for sharing with other threads and processes

        use MCE::Shared;

        tie my $var, "MCE::Shared";

        # usage

        $var = 0;

        tied($var)->incrby(20);

πŸ’… 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, the OO interface is recommended for best performance. Periodt. 🌈

🫢 MCE::Shared::Scalar->new ( [ value ] )

🫢 MCE::Shared->scalar ( [ value ] )

Constructs a new object. Its value is undefined when value is not specified. No value? No drama β€” it’s just undefined. πŸ’œ

        # non-shared or local construction for use by a single process

        use MCE::Shared::Scalar;

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

        # construction for sharing with other threads and processes

        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. Got it? Get it? Slay. πŸ’š

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

🌸 len

Returns the length of the value. It returns the undef value if the value is not defined. Length check, bestie. πŸ“

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

πŸ“ SUGAR METHODS πŸ“

This module is equipped with sugar methods to not have to call set and get explicitly. In shared context, the benefit is atomicity and reduction in inter-process communication. The API resembles a subset of the Redis primitives at https://redis.io/commands#strings without the key argument. It’s giving convenient, lowkey powerful, and highkey adorable. 😭πŸ”₯

🧚 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 value mains, honestly. ⭐

        $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. Swap energy. πŸ‘

        $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. Credit where credit is due, bestie. πŸ’œ

πŸ‘‘ INDEX πŸ‘‘

MCE, MCE::Hobo, MCE::Shared. Index drip check: passed. βœ…

πŸ’œ AUTHOR πŸ’œ

Mario E. Roy, <marioeroy AT gmail DOT com>. Author icon behavior. πŸ‘‘πŸ’–


okay bestie, that’s the whole page. Footer vibe check: perl v5.40.0, dated 2024-09-10, and the page tag is MCE::Sh...::Scalar(3). Stay slay and may your scalar helper class always be exactly as standalone or shared as you need it to be. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from