logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Rex::Shared::Var - Share variables across Rex tasks

Description

       Share variables across Rex tasks with the help of Storable, using a "vars.db.$PID" file in the local
       directory, where $PID is the PID of the parent process.

Limitations

       Currently nesting data structures works only if the assignment is made on the top level of the structure,
       or when the nested structures are also shared variables. For example:

        BEGIN {
          use Rex::Shared::Var;
          share qw(%hash %nested);
        }

        # this doesn't work as expected
        $hash{key} = { nested_key => 42 };
        $hash{key}->{nested_key} = -1; # $hash{key}->{nested_key} still returns 42

        # workaround 1 - top level assignments
        $hash{key} = { nested_key => 42 };
        $hash{key} = { nested_key => -1 };

        # workaround 2 - nesting shared variables
        $nested{nested_key}      = 42;
        $hash{key}               = \%nested;
        $hash{key}->{nested_key} = -1;

Methods

share
       Share the passed list of variables across Rex tasks. Should be used in a "BEGIN" block.

        BEGIN {
          use Rex::Shared::Var;
          share qw($error_count);
        }

        task 'count', sub {
          $error_count += run 'wc -l /var/log/syslog';
        };

        after_task_finished 'count', sub {
          say "Total number of errors: $error_count";
        };

perl v5.40.0                                       2025-02-06                              Rex::Shared::Var(3pm)

Name

       Rex::Shared::Var - Share variables across Rex tasks

Synopsis

        BEGIN {                           # put share in a BEGIN block
          use Rex::Shared::Var;
          share qw($scalar @array %hash); # share the listed variables
        }

See Also