以前保存配置信息,都是直接将信息保存到文本文件,每行一条。这样做会导致可读性降低。

  • 如去年课程作业编写的一个“光线追迹”软件,需要读取的数据完全用空格和换行分隔后保存于文本文件,现在想要理解各个数据的含义就只能查看源代码了,幸好当时注释写的非常详细。
  • 又如今年的一个“膜厚计算”软件。因为需要跨程序调用各个信息(cli<–>LABVIEW<–>dll),直接传递参数太复杂,因此将很多的设置项与共享数据放到了文件中。可读性太差了。

现在正好需要使用perl读写一些配置信息,就将读写config文件的方法汇总一下。

调用Config::Tiny

这个是最简单的方法
详细说明可以参照“<perl安装路径>/html/lib/Config/Tiny.html
然后就可以通过下面的代码读写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

use Config::Tiny;
my $Config = Config::Tiny->new;
$Config = Config::Tiny->read( 'file.conf' );
my $rootproperty = $Config->{_}->{rootproperty};
my $one = $Config->{section}->{one};
my $Foo = $Config->{section}->{Foo};
$Config->{newsection} = { this => 'that' };
$Config->{section}->{Foo} = 'Not Bar!';
delete $Config->{_};
$Config->write( 'file.conf' );

file.conf文件如下:

1
2
3
4
5
6

rootproperty=blah
[section]
one=twp
three= four
Foo =Bar
empty=

调用Configfile::Ini

示例如下:

1
2
3
4
5
6
7
8

use Configfile::Ini;
my $settingsfile = 'test.ini';
my $settings = new Configfile::Ini($Settingsfile);
my %allsettings = $settings->get_all_settings;
my %entry = $settings->get_entry('myentry');
my $value = $settings->get_entry_setting('myentry','thissetting');

详细说明可以参考http://opensource.avajadi.org/configfile-ini/Ini.html

调用Config::IniFiles

示例如下:

1
2
3
4
5
6

use strict;
use warnings;
use Config::IniFiles;
my $cfg = new Config::IniFiles( -file => "./config.ini" );
print "The value is " . $cfg->val( 'Section', 'Parameter' ) . "." if $cfg->val( 'Section', 'Parameter' );

详细说明可以参考http://bbs.chinaunix.net/thread-1071426-1-1.html中的4楼回复。

调用Win32::AdminMisc

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

use strict;
use Win32::AdminMisc;
use Cwd;
my $dir = getcwd;
my $file = $dir . $ARGV[0];
foreach my $section (Win32::AdminMisc::ReadINI($file, "", ""))
{
    foreach my $key (Win32::AdminMisc::ReadINI($file, $section, ""))
    {
        my $value = Win32::AdminMisc::ReadINI($file, $section, $key);
        print "($key, $value)", "n";
    }
}

详细说明可以参考http://blogold.chinaunix.net/u/29291/showart_344126.html中的第三种方法。

调用IniParser

示例如下:

1
2
3

use IniParser;
my $ini = IniParser->new("test.ini");
my $inputdir    = $ini->expectEntry("Directories","Input");

详细说明可以参考http://www.lwolf.cn/BLOG/article/program/perl-ini.html。

自己写

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#!/usr/bin/perl -w
open CONFIG,"config.ini" || die "open config $!n";
$session=$ARGV[0];
$key=$ARGV[1];
$flag=0;
while($string=){
   chomp $string;
    if($flag == 0 &&$string !~ /^[$session]/ ){
    next;}
    $flag = 1;
   if ( ($string !~ /^#/)&&(($k,$v) = $string =~ m/(w+)=(.*)/) ){
       if($k eq $key){
        print "I find $k ............... value $vn";
        last;}}
    else{
    next;}
    if( $string =~ /^[/){
    last;}
}

config.ini文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14

[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

带参数执行:

1
2

C:UsersleniyDesktop1>perl.pl perl1 two
I find two ............... value 2

详细说明可以参考http://hi.baidu.com/litaosmile/blog/item/72938859764aaf2d2934f04d.html。

perl亲身试验ini---使用perl读写配置文件相关推荐

  1. 解答:一个perl操作config.ini的出现的 cannot find file or dirctionary,可明明文件存在

    需求:perl 脚本动态的获取配置文件,将有exception的异常大文件in.log 抓取exception异常出来写入一个小文件out.log中 问题:perl操作一个config.ini文件读取 ...

  2. 如何在MFC中读写配置文件

    如何在MFC中读写配置文件 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI ...

  3. python-ConfigParser模块【读写配置文件】

    对python 读写配置文件的具体方案的介绍 1,函数介绍 import configParser 如果Configparser无效将导入的configParser 的C小写 1.1.读取配置文件 - ...

  4. python:实例化configparser模块读写配置文件

    之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用. 实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高 ...

  5. Python 读写配置文件模块: configobj 和 configParser

    参考:http://www.voidspace.org.uk/python/configobj.html Python模块之ConfigParser - 读写配置文件:http://www.cnblo ...

  6. python自动化读取和写入文件_基于Python的接口自动化实战-基础篇之读写配置文件...

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...

  7. 在VB中INI文件的读写、删除(对中文支持很好)

    很多时候我们编一个程序不一定要用到注册表来保存设置(如果说一个程序没有设置就不算好程序了).INI是一个很好的选择.有人说,Savesetting是一个不错的选择,但是我了解到,不能永久的保存(起码在 ...

  8. python读conf配置文件_python读写配置文件操作示例

    本文实例讲述了python读写配置文件操作.分享给大家供大家参考,具体如下: 在用编译型语言写程序的时候,很多时候用到配置文件,作为一个约定的规则,一般用 ini 文件作为配置文件,当然不是绝对的,也 ...

  9. .Net2.0 使用ConfigurationManager读写配置文件

    .net1.1中如果需要灵活的操作和读写配置文件并不是十分方便,一般都会在项目中封装一个配置文件管理类来进行读写操作.而在.net2.0中使用ConfigurationManager 和WebConf ...

最新文章

  1. 花了一个星期,我终于把RPC框架整明白了!
  2. 如何安装Pycharm官方统计代码行插件
  3. Python函数及相关知识
  4. 实战-130W表增加字段耗时
  5. typedef 及其与struct的结合使用
  6. 信息系统项目管理07——项目成本管理
  7. Windows移动开发(一)——登堂入室
  8. 网吧电脑显示连不上服务器,Pubwin客户机连不上服务器怎么办?
  9. Maya批量随机替代插件BatchReplacerV1.0.2 下载及教程
  10. 利用cropper插件进行图片裁剪
  11. 传奇客户端wil文件说明
  12. python如何更改背景颜色_python背景颜色,python改背景色
  13. 如何将PDF转化成Word格式
  14. Azul开源Zing Jvm
  15. PyQt5 第七章 综合篇(一)
  16. 用四阶RungeKutta方程解二阶常微分方程,并计算船舶在规则波中的横摇角(附Matlab代码)
  17. 1号店详情页(共5页)
  18. 用Python写一个量化交易策略
  19. 自定义navigationBar字体大小颜色背景色
  20. MFC 加入文件时有坑stdafx.h

热门文章

  1. RAC静默安装与DG搭建
  2. 制作内网yum源 同步阿里的源
  3. 微软最有价值专家大中华峰会开幕视频
  4. 安装配置java,tomcat,eclipse
  5. 【Programming Clip】点分十进制IP和长整型转换
  6. 常见NetBackup通讯问题及排错一般步骤
  7. 模式实例之——单件模式实例
  8. asp.net MVC留言本示例
  9. 微软3月补丁星期二修复71个漏洞,其中3个是0day
  10. VMware Cloud Director 被曝严重漏洞,可导致黑客接管企业服务器