PERL:逐行文本解析脚本

use*_*283 1 regex perl parsing

对于锻炼和好奇心,任何人都知道以下脚本是否可以更紧凑和更快捷:

foreach(@list){
    if ($_=~"givenName: ") {
        $cname=$_;
        $cname=~ s/givenName: //g;
    } 
    if ($_=~"cn: ") {
        $cn=$_;
        $cn=~ s/cn: //g;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

做什么: - 它在行内查找一个字符串,看它是否包含该特定索引 - 然后剥离字符串并读取将内容放入变量的行的其余部分. - 此脚本逐行读取另一个脚本的结果,并标识每行的字段,将值放入适当的变量中

Tim*_*rce 5

如果列表中的每一行都保证采用'variableName:someText'格式,那么你可以这样做:

foreach (@list) {
    /^(\w+): (.*)/ && $vars{$1} = $2;
}
Run Code Online (Sandbox Code Playgroud)

这不是完全像您的解决方案-它把结果放到一个%vars哈希,而不是为命名的变量$cname,$cn等等-但它更简洁和通用.