Readability more important than brevity :( Well, I can try...
#!/usr/bin/perl use strict; https://perlmonks.org/?node_id=11136353 use warnings; use Path::Tiny; my $dhcpcdfile = 'fake.353'; # FIXME filename -w $dhcpcdfile or die "cannot write $dhcpcdfile"; my %ip_params = ( interface => "usb0", ip_address => "1.1.1.0", routers => "127.0.0.0", domain_servers => "1.1.1.1" ); %ip_params = ( %ip_params, # add new data to defaults path('inputfile.353')->slurp =~ /^(\w+)=(.*?)\s*$/gm ); # FIXME file +name use Data::Dump 'dd'; dd 'ip_params', \%ip_params; { # block scope for locals local @ARGV = $dhcpcdfile; local $^I = '.bak'; # make backup, do inplace edit my $foundinterface = 0; while( <> ) { if( /^\s*profile\s+static_$ip_params{interface}\b.*\n/m ) # alter th +is section { $foundinterface = 1; warn "found section for $ip_params{interface} at line $.\n"; } elsif( $foundinterface and /static/ ) { s/^\s*static\s+(\w+)=\K.*/$ip_params{$1}/m or warn "failed to chan +ge $1"; warn "set $1 to $ip_params{$1}\n"; } elsif( $foundinterface ) { $foundinterface = 0; warn "ending changes at line $.\n"; } print; } }
The warns and Data::Dump can be removed, of course, making it even more readable :)
In reply to Re: Yet another config file editing programme : Tell me how to make it better !
by tybalt89
in thread Yet another config file editing programme : Tell me how to make it better !
by dazz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |