在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2502|回复: 3

[求助] perl读入文件时按顺序地执行一系列操作

[复制链接]
发表于 2017-2-18 14:39:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
想请教利用perl做以下这类事情时的编程风格。
这类事情就是:在读入文件时按顺序地执行一系列操作。

例如:
读入文件后,先逐行匹配pattern A,匹配到后做某一个动作A';
然后从此行继续往下逐行,但是匹配pattern B,匹配到后做某一个动作B';
依次,可能做到D'后,再往下就匹配pattern A了,如此循环,直到这个文件结束。

因为是一个有顺序的动作序列,我又是写数字电路的,所以平常的做法都是在perl里仿照着写状态机。
又由于perl没有case,所以写出来都是这个样子的:
while(<FILE>){
    ...
    if($state eq 'aaaa'){    #当前状态aaaa
        if(/AAAA/){    #若匹配AAAA
            $state = 'bbbb';
        }
    }
    elsif($state eq 'bbbb'){
    }
    elsif ....{
    }
    else{
    }
}

总觉得味道不够perl,想请教各位大牛都是怎么做的?
发表于 2017-2-21 14:45:39 | 显示全部楼层
是不是设置一个状态好一点啊,类似于状态机一样,while里面首先判断是什么状态,你不是有四个pattern吗那就4个状态,每一个状态匹配一个,完了用last返回。
发表于 2017-5-29 17:52:30 | 显示全部楼层
你说的应该是多行的文本匹配。
我看网上的做法是基于tell和seek。

参考:
perl文件句柄的理解(tell、seek)以及文本多行匹配的一种算法 - 学而不思则罔,思而不学则殆 - 博客频道 - CSDN.NET  
http://blog.csdn.net/u011729865/article/details/71189916
 楼主| 发表于 2017-5-31 08:41:57 | 显示全部楼层
回复 3# 001qilei001


    这么古老的帖子居然有人回了,感激涕零
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 08:48 , Processed in 0.016969 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表