our
$VERSION
=
'0.4234'
;
$VERSION
=
eval
$VERSION
;
sub
new {
my
(
$pack
,
%args
) =
@_
;
return
bless
{
stack
=> {},
values
=>
$args
{
values
} || {},
},
$pack
;
}
sub
get {
my
(
$self
,
$key
) =
@_
;
return
$self
->{
values
}{
$key
}
if
ref
(
$self
) &&
exists
$self
->{
values
}{
$key
};
return
$Config
{
$key
};
}
sub
set {
my
(
$self
,
$key
,
$val
) =
@_
;
$self
->{
values
}{
$key
} =
$val
;
}
sub
push
{
my
(
$self
,
$key
,
$val
) =
@_
;
push
@{
$self
->{stack}{
$key
}},
$self
->{
values
}{
$key
}
if
exists
$self
->{
values
}{
$key
};
$self
->{
values
}{
$key
} =
$val
;
}
sub
pop
{
my
(
$self
,
$key
) =
@_
;
my
$val
=
delete
$self
->{
values
}{
$key
};
if
(
exists
$self
->{stack}{
$key
} ) {
$self
->{
values
}{
$key
} =
pop
@{
$self
->{stack}{
$key
}};
delete
$self
->{stack}{
$key
}
unless
@{
$self
->{stack}{
$key
}};
}
return
$val
;
}
sub
values_set {
my
$self
=
shift
;
return
undef
unless
ref
(
$self
);
return
$self
->{
values
};
}
sub
all_config {
my
$self
=
shift
;
my
$v
=
ref
(
$self
) ?
$self
->{
values
} : {};
return
{
%Config
,
%$v
};
}
1;