The following example shows how you could read this file.
|
%vars = ();
if ($#ARGV >= 0) { open (VAR, "< $ARGV[$#ARGV]") or die "Error: Cannot open variable file";
while ( <VAR> ) { chomp; &get_var_from_string($_); } } else { die "Error: No variable file on the command line\n"; }
open (SAVE, "> varfile") or die "Error: Cannot open variables file";
foreach $var (sort keys %vars) { print SAVE "Variable $var value=$vars{$var}->{value} ", "desc=$vars{$var}->{description}\n"; }
close (SAVE);
exit;
sub get_var_from_string
{ my $string = shift;
my ($var, $val, $desc);
if ($string =~ /VAR\s+(\w+)\s+ VALUE\s*=\s*['"](.*?)['"]\s* DESCRIPTION\s*=\s*['"](.*?)['"] /x) { $var = $1; $val = $2; $desc = $3; } elsif ($string =~ /VAR\s+(\w+)\s+ DESCRIPTION\s*=\s*['"](.*?)['"]\s* VALUE\s*=\s*['"](.*?)['"] /x) { $var = $1; $val = $3; $desc = $2; } elsif ($string =~ /VAR\s+(\w+)\s+ VALUE\s*=\s*['"](.*?)['"] /x) { $var = $1; $val = $2; $desc = undef;
}
if ($var) { $var = uc($var); $var =~ s/\s+/_/g;
if (exists $vars{$var}) { $vars{$var}->{value} = $val; $vars{$var}->{description} = $desc; } else { my $variable = {}; $variable->{value} = $val; $variable->{description} = $desc;
$vars{$var} = $variable; } } }
|