John, this code didn't work for me. Although I did have to change <DATA> to <RD>;
Probably because he use the sample data in the DATA filehandle.
His code works correctly near as I can tell; so - My question is - is your data actually in this format?
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
Using John's code:
#!perl -w use strict; use Data::Dumper;
# open RD, 'input.txt' or die "Cannot open 'input.txt' $!";
my ( %data, $temp );
while ( <DATA> ) { chomp; my ( $name, $value ) = split /\s*=\s*/ or next; if ( exists $temp->{ $name } or eof DATA ) { $data{ $temp->{ port } } = $temp; $temp = { $name, $value }; next; } $temp->{ $name } = $value; }
print Dumper \%data;
__END__ 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
I get:
$VAR1 = { '1' => { 'baudrate' => '9600', 'flowcontrol' => '0', 'uarttype' => '0', 'databits' => '8', 'stopbits' => '1', 'port' => '1', 'benable' => '1', 'parity' => '0', 'bmanset' => '0' }, '0' => { 'protocol' => '1', 'baudrate' => '9600', 'flowcontrol' => '0', 'uarttype' => '0', 'databits' => '8', 'stopbits' => '1', 'port' => '0', 'benable' => '1', 'parity' => '0', 'bmanset' => '0' } };
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>