如何利用Perl来解析config文件

谢谢楼上各位大侠!

我的愿意是想写一个自动化脚本,帮助用户设置安装软件的环境变量,安装路径,并提示用户如何安装;
以前没有接触过perl,以为perl应该很快能搞定。
现在发现perl需要掌握的东西也很多啊,而且要写自动化的东西,除了perl,还需要正则表达式等

谢谢楼上各位, 刚明白了一些概念, 刚刚买了 “小骆驼”书,希望多多指教!
@zheng兄,

你的code可以分析config文件,谢谢。

但是, 我想将config文件中所有的变量都以“健-值”的形式存到Hash表中,如何做?
你的code好像是只存储一行(即一个变量,):如下:


#!/usr/bin/perl



use strict;
use warnings;

open (CONFIG_FILE, "config") || die ("Could not open file");

while(<CONFIG_FILE>){
     chomp;                  # no newline

       s/#.*//;                # no comments

       s/^\s+//;               # no leading white

       s/\s+$//;               # no trailing white

       next unless length;     # anything left?

     my %result = my ($keys,$values) = split(/\s*=\s*/, $_, 2);
     print "\$result{$keys} = $result{$keys}\n";

}
那是我在前面的一位兄弟的代码上改的,只是作为一个参考!
这个问题其实很简单的,只是 'my' 引起的:
#!/usr/bin/perl


use strict;
use warnings;

open (CONFIG_FILE, "config") || die ("Could not open file");

my %result=();
while(<CONFIG_FILE>){
     chomp;                  # no newline

     s/#.*//;                # no comments

     s/^\s+//;               # no leading white

     s/\s+$//;               # no trailing white

     next unless length;     # anything left?


     #my %result = my ($keys,$values) = split(/\s*=\s*/, $_, 2);

     my ($keys,$values) = split(/\s*=\s*/, $_, 2);
     $result{$keys} = $values;
}

close(CONFIG_FILE);


呵呵,小弟愚笨,刚刚想到了修改@zheng兄的法子,如下:

#!/usr/bin/perl



use strict;
use warnings;

open (CONFIG_FILE, "config") || die ("Could not open file");

my %result; #static global Hash variable

while(<CONFIG_FILE>){
     chomp;                  # no newline

       s/#.*//;                # no comments

       s/^\s+//;               # no leading white

       s/\s+$//;               # no trailing white

       next unless length;     # anything left?

     my ($keys,$values) = split(/\s*=\s*/, $_, 2);
     $result{$keys} = $values;
     print "\$result{$keys} = $result{$keys}\n";

}
谢谢@zheng兄!


QUOTE:
原帖由 @zheng 于 2008-6-10 14:48 发表
那是我在前面的一位兄弟的代码上改的,只是作为一个参考!
这个问题其实很简单的,只是 'my' 引起的:
#!/usr/bin/perl


use strict;
use warnings;

open (CONFIG_FILE, "config") || die ("Could no ...

这段代码是可以分析config文件,呵呵,比较完善一些。
有现成的还是别自己写了吧,perl本来就是给人用来偷懒的...
converse兄指的是楼上大侠提到的 "config:simple" 或者"config:general"模块吗?

小弟刚用perl,模块(及其机制)还不会使,惭愧。
我不知道,没用过,但我知道一定有这样的模块,没必要自己写,不就是那点东西嘛,写来写去也没什么价值,把时间用在其它地方吧.