perl 读取 配置文件

perl 读取 配置文件

http://hi.baidu.com/litaosmile/blog/item/72938859764aaf2d2934f04d .html

config-------------------------------
[perl1]
# one=1
two=2
three=3
# four=four=4
five=asd ad 5
asdasdasd
[per2]
# one=1
two=2
three=3
# four=four=4
five=I am lipeng
asdasdasd


perl--------------------------------
#!/usr/bin/perl -w
open CONFIG,"config" || die "open config $!\n";
$session=$ARGV[0];
$key=$ARGV[1];
$flag=0;
while(<CONFIG>)
{
chomp;
if(/^\s*#/ or /^\s*$/){#预处理--过滤注释行和空行
next;

if($flag == 0 && !~ /^\[$session\]/ )
{
next;
}
$flag = 1;
if( (!~ /^#/) && (($k,$v) = m/(\w+)=(.*)/) )
{
if($k eq $key)
{
print "I find $k ............... value $v\n";
last;
}
}
else
{
next;
}
if(/^\[/)
{
last;
}

}

1、预处理:
过滤注释行和空行
对所有的行去除注释部分
while(<CFG>){
if(/^\s*#/ or /^\s*$/){ #预处理--过滤注释行和空行
next;
}

s/\s*#.*//; #去除注释部分
start
}

2、全局唯一参数的读取:
采用哈希表的形式进行赋值和取值
$cfg{key}=value;

3、多个相同格式参数组的读取
设置参数组起始标记
标记内部顺序读取或者条件读取

open(CFG,"config.ini") or die "Cannot open the file: $!";
my @lines = <CFG>;
close(CFG);

for(my $i = 0 ; $i < @lines;$i++){
$_=$lines[$i];
if(/^\s*#/ || /^\s*$/){#除去空行和注释行
next;
}

if($lines[$i]=~m/^\s*\[start]/i){
$_=$lines[++$i];

while($lines[$i]!~ m/^\s*\[END]/i){
s/\s*#.*// unless(/^\s*-?password|username/);#去除注释部分,用户名和密码部分例外
if(s/^\s*-?manu.*:\s*//){
chomp;
$manufacturer = $_;    
}
if(s/^\s*-?ipadd.*:\s*//){
chomp;
$ipaddress = $_;
}
if(s/^\s*-?hostname:\s*//){
chomp;
$hostname = $_;
}
if(s/^\s*-?username:\s*//){
chomp;
$username = $_;
}
if(s/^\s*-?password:\s*//){
chomp;
$password = $_;
}
$_=$lines[++$i];
}
 
if($manufacturer =~ m/huawei/){
&telnet_huawei($hostname,$ipaddress,$username,$password);
}
if($manufacturer =~ m/cisco/){
&telnet_cisco($hostname,$ipaddress,$username,$password);
}
if($manufacturer =~ m/netscreen|juniper/){
&telnet_netscreen($hostname,$ipaddress,$username,$password);
}
}#if [start]
}#for

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值