1#
2# (c) Jan Gehring <jan.gehring@gmail.com>
3#
4# vim: set ts=2 sw=2 tw=0:
5# vim: set expandtab:
6
7package Rex::Shared::Var::Scalar;
8
9use 5.010001;
10use strict;
11use warnings;
12
13use Rex::Shared::Var::Common qw/__lock __store __retrieve/;
14
15our $VERSION = '1.13.4'; # VERSION
16
17sub TIESCALAR {
18  my $self = { varname => $_[1], };
19  bless $self, $_[0];
20}
21
22sub STORE {
23  my $self  = shift;
24  my $value = shift;
25
26  return __lock sub {
27    my $ref = __retrieve;
28    my $ret = $ref->{ $self->{varname} } = $value;
29    __store $ref;
30
31    return $ret;
32  };
33}
34
35sub FETCH {
36  my $self = shift;
37
38  return __lock sub {
39    my $ref = __retrieve;
40    return $ref->{ $self->{varname} };
41  };
42}
43
441;
45