Hi all,
I am trying to setup a hash who's values are referance to hash's. Data structure
should look like this
hash
1:
setting 1
setting 2
2:
setting 1
setting 2
....
I would think it can be accomplished with following code, but when I try to print it
out it only prints the last setting which it read. Any idea's ??
CODE:
#!perl -w
use strict;
open RD, "input.txt";
my ( $field,$portsetting, $value, $port, $portnum, %digi, $debug );
$debug=0;
while ( <RD> ) {
if(m/^(port)\s\=\s(.*)$/i){$portnum=$2;$portnum++}
$field = {};
$digi{$portnum} = $field;
m/^(.*)\s\=\s(.*)$/;
$portsetting=$1;
$value=$2;
$field->{$portsetting}=$value;
print "setting $portsetting -> $digi{$portnum}{$portsetting}\n" if $debug;
if($portsetting eq 'porttitle'){
$value =~ tr /-/ /;
$value =~ m/^(\w+)\s+(\w+)/i;
$field->{$portsetting}=$1;
$field->{'type'}=$2;
print "1:$digi{$portnum}{$portsetting}\t2:$digi{$portnum}{'type'}\n" if $debug;
}
}
# print the whole thing
foreach $port ( keys %digi ) {
print "$port: { ";
for $field ( keys %{ $digi{$port} } ) {
print "$field=$digi{$port}{$field} ";
}
print "}\n";
}
Sample DATA
port = 0
bmanset = 0
benable = 1
uarttype = 0
baudrate = 9600
stopbits = 1
databits = 8
parity = 0
flowcontrol = 0
protocol = 1
port = 1
bmanset = 0
benable = 1
uarttype = 0
baudrate = 9600
stopbits = 1
databits = 8
parity = 0
flowcontrol = 0
protocol = 1
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>