小编key*_*ior的帖子

如何迭代多个正则表达式?

所以要开始我在使我的代码更清洁方面遇到麻烦,我从逻辑上知道这是一个烂摊子,但我相对较新.无论如何,我们正在使用的是:

 sub Regexin    {

        open (my $in, "<", "regexin.txt") or die "cannot open: $!";
        open (my $out, ">", "regexin1.txt") or die "cannot open: $!";
        while (<$in>)
        {
        s/#Location/$EmergInfo[0]/g;
        s/#LastUpdate/$EmergInfo[1]/g;
        s/#AddInfo/$EmergInfo[2]/g;
        s/#SpecInst/$EmergInfo[3]/g;
        s/#MsdsLoc/$EmergInfo[4]/g;
        s/#SpillLoc/$EmergInfo[5]/g;
        s/#CONTACT1/$EmergInfo[6]/g;
        s/#CONTACT2/$EmergInfo[7]/g;
        s/#DEPARTMENT1/$EmergInfo[8]/g;
        s/#DEPARTMENT2/$EmergInfo[9]/g;
        s/#OFFICE1/$EmergInfo[10]/g;
        s/#OFFICE2/$EmergInfo[11]/g;
        s/#OPHONE1/$EmergInfo[12]/g;
        s/#OPHONE2/$EmergInfo[13]/g;
        s/#HPHONE1/$EmergInfo[14]/g;
        s/#HPHONE2/$EmergInfo[15]/g;
print $out $_;
        }
        close $in;
        close $out;
        unlink('regexin.txt') or die "error deleting regexin.txt\n";
                }
Run Code Online (Sandbox Code Playgroud)

所有这些正则表达式显然看起来非常粗暴,我已经尝试使用foreach,每个都使用哈希和使用数组的多种方式,但没有找到一个很好的一行.我的目标是得到这样的东西:

s/$keys/$values/g;
Run Code Online (Sandbox Code Playgroud)

就是这样,它迭代但正则表达式很奇怪.此外,变量$ EmergInfo只保存文本(电话号码和姓名等内容).我真的在互联网上搜索过(包括perldoc),但绝对可能错过了一些东西.任何帮助表示赞赏,谢谢.

regex perl hash replace file-handling

1
推荐指数
1
解决办法
74
查看次数

标签 统计

file-handling ×1

hash ×1

perl ×1

regex ×1

replace ×1