Hej
Jeg indrømmer gerne at jeg er en perl noob, men alligevel kan jeg ikke
fatte hvorfor jeg ikke kan få det til at virke.
Jeg vil lave en "parser" der læser en conf fil og spytter noget andet ud.
Den fil som skal læses ser nogenlunde sådan her ud:
key1 {
key2 = value1
key3 = value2
key4 { key5 = value3 }
}
Jeg vil gerne have den fil puttet i en hash, så jeg let kan tilgå den,
f.eks. ved: print($minhash{'key1'}{'key4'}{'key5'}) hvilket vil print
value3 så.
Først læser jeg filen ind i et array, og så køre jeg denne funktion på
den:
sub getSection {
my $size = @{ $arrayLineRef }; # ref til arrayet m. filen
my %tempHash;
my @lineData;
while ($linePos < $size) { # $linePos er 0 første gang
my $line = @{ $arrayLineRef }[$linePos];
if ($line =~ /\}/) {
return %tempHash;
}
if ($line =~ /\{/ ) {
$line =~ s/\{//;
my $sectionKey = trim_whitespace($line);
$linePos++;
$tempHash{$sectionKey} = ( getSection($linePos) );
}
elsif ($line !~ /\}/) {
@lineData = extract_data($line); # retuner et key/value array
$tempHash{$lineData[0]} = ($lineData[1]);
}
$linePos++;
}
}
Problemet ligger for det første i at min return %tempHash; ikke retunere
noget. Desuden har jeg fået en del fejl med "odd number of elements i
hash" men de skulle være væk nu.
--
Mvh. / Kind regards
Henrik Farre
http://www.cs.auc.dk/~enrique