#! /usr/bin/perl -w

use strict;

{
   my ($file, $line, $name, $key, $value, $boolean, $integer, $float, 
       $string, $n, %nameValues);

   $name = '[A-Z][A-Z0-9_]+(?:\(\d\))?';
   $boolean = '\.true\.|\.TRUE\.|\.false\.|\.FALSE\.|\.T|\.F';
   $integer = '-?\d+';
   $float = '-?\d+\.\d*E?-?\+?\d*|-?\d*\.\d+E?-?\+?\d*';
   $string = '\'[^\']+\'';

   $file = 'namelist.txt';
   open(FILE, $file) or die("can't open $file");
   while ($line = <FILE>) {
      if (($line =~ m/^\s*($name)\s*=\s*($boolean)/) ||
          ($line =~ m/^\s*($name)\s*=\s*((?:$float\s*,?\s*)+)/) ||
          ($line =~ m/^\s*($name)\s*=\s*((?:$integer\s*,?\s*)+)/) ||
          ($line =~ m/^\s*($name)\s*=\s*($string)/)) {
         $nameValues{$1} = $2;
      }
   }
   close(FILE) or die("can't close $file");

   foreach $n (sort(keys(%nameValues))) {
      print("$n = $nameValues{$n}\n");
   }
}
