#!/C:/Perl/bin/perl.exe use strict; use warnings; return 1; sub read_ini { my @content; my %lines; my $file=shift; my $name=shift; open(IN,"<$file") or die "$!"; undef $_; @content=; close(IN); my $i=0; my $n=0; for (@content) { $i++ if /\[.*?\]/i; $n=$i if /\[$name\]/i; $lines{"$1"}="$2" if /^(.*?)\=(.*)$/i and $i==$n; } return %lines; } sub change_ini { my @content; my %lines; my $file=shift; my $name=shift; my $key=shift; my $value=shift; open(IN,"<$file") or die "$!"; @content=; close(IN); my $i=0; my $n=0; for (@content) { $i++ if /\[.*?\]/io; $n=$i if /\[$name\]/io; s/(^$key\=)(.*)$/$1$value/i, last if /(^$key\=)(.*)$/i and $i==$n; } open(IN,">$file") or die "$!"; for(@content) { print IN $_; } close(IN); } sub insert_item { my @content; my $file=shift; my $name=shift; my $new_kv=shift; open(IN,"<$file") or die "$!"; @content=; close(IN); my $i=0; my $n=0; open(IN,">$file") or die "$!"; for(@content) { $i++ if /\[.*?\]/io; $n=$i if /\[$name\]/io and $n ne '-'; if($n eq $i and $n ne '-') { print IN $_; print IN "$new_kv\n"; $n='-'; } else { print IN $_; } } close(IN); } sub insert_topic { my $file=shift; my $name=shift; open(IN,">>$file") or die "$!"; print IN "[$name]\n"; close(IN); }