open CF, $ARGV[2] or die "Unable to open $ARGV[2]";
my %options = ();
my %vars = ();
+sub opt {
+ my ($k,$v) = @_;
+ $vars{$k} = $v;
+ $options{$k} = 1 if ($k =~ /^CONFIG_/);
+}
+foreach my $k (keys %ENV) {
+ opt($k, $ENV{$k});
+}
while (<CF>) {
chomp;
if (my ($k,$v) = /^(\w+)=(.*)/) {
$v =~ s/\s+$//;
- $vars{$k} = $v;
- $options{$k} = 1 if ($k =~ /^CONFIG_/);
+ opt($k, $v);
}
}
close CF;
die "Piped command '$cmd' failed" if $?;
print OUT `$1`;
} else {
- sub repl ($) {
+ sub repl($);
+ sub repl($) {
my $v = shift @_;
exists $vars{$v} or die "Cannot substitute $v: variable not set";
- return $vars{$v};
+ my $x = $vars{$v};
+ while ($x =~ s/\$\((\w+)\)/repl($1)/ge) { }
+ return $x;
}
s/@(\w+)@/repl($1)/ge;
print OUT;