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