From 544058a8ebb15d95a4e66abad4213fd0f83c6aac Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 21 Nov 2022 00:37:11 +0100 Subject: [PATCH] recurse nested braces in report variables --- barcat | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) 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; -- 2.30.0