blob: d9961c058703aca02e809c3f0801a617354dfa39 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
package Config::Tree::Node::Value;
use parent 'Config::Tree::Node';
use strict;
use warnings;
sub new {
my $class = shift;
local %_ = @_;
my $v = delete $_{value};
my $self = $class->SUPER::new(%_);
$self->value($v);
return $self;
}
sub value {
my ($self, $val) = @_;
if (defined($val)) {
$self->{_value} = $val;
return; # Avoid evaluatig value too early
} else {
$val = $self->{_value};
}
if (ref($val) eq 'CODE') {
$val = &$val;
}
if (wantarray) {
if (ref($val) eq 'ARRAY') {
return @$val
} elsif (ref($val) eq 'HASH') {
return %$val
}
}
return $val;
}
sub is_leaf { 1 };
sub as_string {
my $self = shift;
return $self->value
}
1;
|