From: Mischa POSLAWSKY Date: Sun, 20 Nov 2022 23:37:11 +0000 (+0100) Subject: recurse nested braces in report variables X-Git-Tag: v1.10~37 X-Git-Url: http://git.shiar.nl/barcat.git/commitdiff_plain/544058a8ebb15d95a4e66abad4213fd0f83c6aac recurse nested braces in report variables --- diff --git a/barcat b/barcat index 6dbddd9..e02ce4e 100755 --- a/barcat +++ b/barcat @@ -383,19 +383,20 @@ sub show_stat { sub varfmt { my ($fmt, $vars) = @_; - $fmt =~ s[\$\{ (\w+) (?; (?: [^{}]+ | \{.*?\} )*)? \}]{ - local $_ = $vars->{$1}; + $fmt =~ s[\$\{( (?: [^{}]++ | \{(?1)\} )+ )\}]{ + my ($name, $cmd) = split /\s*;/, $1, 2; + local $_ = $vars->{$name}; if (defined) { $_ = $opt{'value-format'}->($_) if $opt{reformat}; - if ($+{cmd}) { - eval $+{cmd}; - warn "Error in \$$1 report: $@" if $@; + if ($cmd) { + eval $cmd; + warn "Error in \$$name report: $@" if $@; } $_; } else { - warn "Unknown variable \$$1 in report\n"; - "\$$1"; + warn "Unknown variable \$$name in report\n"; + "\$$name"; } }eg; return $fmt;