http://qs1969.pair.com?node_id=1152125


in reply to Update config file parameters

I understand that your config file is probably plain text, but here's an option using Data::Dumper and require.

Start with a configuration format, like a HASH:
perl -MData::Dumper -e ' $conf = { DEVICE => 'eth0', ONBOOT => 'yes', BOOTPROTO => 'static', TYPE => 'Ethernet', IPADDR => '10.9.0.200', NETMASK => '255.255.0.0', GATEWAY => '10.9.1.254', }; open( $fh, ">", "monkConfig.txt" ) or die; print $fh Data::Dumper->Dump([$conf],["config"]); '
Creates a file with this format:
$config = { 'TYPE' => 'Ethernet', 'ONBOOT' => 'yes', 'NETMASK' => 255.255.0.0, 'GATEWAY' => 10.9.1.254, 'DEVICE' => 'eth0', 'IPADDR' => 10.9.0.200, 'BOOTPROTO' => 'static' };
Then use require to access the data:
perl -le 'require "monkConfig.txt"; print $config->{'TYPE'}; ' __output__ Ethernet
...then redo the Dump to write changes back to file. Yeah, probably a bit more tedious then Tie::File, but imagine the possibilities!