#!/usr/bin/perl
#
use strict;
my($line, %vars, %defs);

open(F, $ARGV[0]);
while($line = <F>){
  if($line =~ /(\S+)\s*=\s*(.+)/){
    $vars{$1} = substitute($2);
  }elsif($line =~ /(\S+)\s*:\s*(.+)/){
    my($key, $val) = ($1, $2);
    $defs{$key} = substitute($val);
    #printf("Read in: %s -> %s\n", $1, $defs{$1});
  }
}
close(F);
#printf("\n\n%s\n...\n", $defs{Version});
#foreach $x (keys(%defs)){
#  printf("%s -> %s\n", $x, $defs{$x});
#}
#printf("...\n");

#printf("\"");
my($i) = 1;
while(1){
  if(defined($ARGV[$i]) && defined($ARGV[$i+1]) && defined($defs{$ARGV[$i+1]})){
    printf("%s=%s ", $ARGV[$i], $defs{$ARGV[$i+1]});
    $i += 2;
  }else{
    last;
  }
}
#printf("\"");

sub substitute{
  my($str) = @_;
  while($str =~ /(.*)\$\{(\S+)\}(.*)/){
    if(exists($vars{$2})){
      $str = $1.$vars{$2}.$3;
    }else{
      $str = $1.$3;
    }
  }
  return $str;
}

#
