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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7915|回复: 10

[求助] perl新手求助

[复制链接]
发表于 2012-8-21 19:04:02 | 显示全部楼层 |阅读模式

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

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

x
利用perl实现将一个文本中的某一段提取出来,放到一个新的文件中
文件名:test.ldif  包含如下内容
dn:xxxxxxx
objectclass:xxxxxxxx
cn:xxxxxxxx
mail:xxxxxxxx

dn:xxxxxxx
objectclass:xxxxxxxx
cn:xxxxxxxx
mail:xxxxxxxx

cn:xxxxxxxx
member:xxxxxxxx
member:xxxxxxxx

其中“xxxxx”为内容(第一段的内容和第二段的内容不一样),如何把前两段提取出来存入一个文件,最后一段存入一个文件,最后删除test.ldif这个文件
发表于 2012-8-22 09:39:50 | 显示全部楼层
写个大体思路给你吧:
open(NEW, ">$file") || die "";
open(NEW2, ">$file2") || die "";
open(FILE, "test.ldif") || die "";

while(<FILE>) {
         if(/dn:.*/){
         print NEW "$_";
此处省略数行
} elsif(/cn.*/) {
         print NEW2 "$_";
}
}

close ();
 楼主| 发表于 2012-8-22 12:31:57 | 显示全部楼层
回复 2# eeares


    我悟性比较低,能否写的详细点
发表于 2012-10-25 23:14:10 | 显示全部楼层
一楼貌似写的有点问题啊,
错在elseif那里吧,会匹配错哦!!!
发表于 2012-11-8 17:06:39 | 显示全部楼层
不会啊!
发表于 2012-11-9 10:56:47 | 显示全部楼层
本帖最后由 射门靴 于 2012-11-9 14:04 编辑

回复 1# baojiewu

用个范围符,不然2楼的匹配有点问题的

open(NEW, ">$file") || die "";
open(NEW2, ">$file2") || die "";
open(FILE, "test.ldif") || die "";

while(<FILE>) {
         if(/dn:.*/../mail:.*/){
         print NEW  ;

         } elsif(/cn.*/../member:.*/) {
              print NEW2 ;  
            }
}

close () ;
 楼主| 发表于 2012-11-9 13:50:26 | 显示全部楼层
回复 6# 射门靴


    为什么第一个没有用“$_” 而第二个用了“$_”,对于“$_” 的用法我学的比较模糊,一直没有搞明白,有没有相关的介绍可以分享一下,谢谢
 楼主| 发表于 2012-11-9 13:52:11 | 显示全部楼层
回复 4# 海楼


   我也这么觉得
发表于 2012-11-9 14:04:00 | 显示全部楼层
回复 7# baojiewu


    $_我感觉是当前变量的意思吧,比如数组里面用foreach的时候,每次只对数组中的一个元素进行处理,这时候花括号里面的$_就是当前处理的这个元素。当然这只是举个数组的例子,在别的地方也会用到,比如说你问的那个,那里我感觉有没有$_都是一样会出来打印结果的。不知道这么理解对不对,还要相互学习,共同进步哈~
发表于 2012-11-9 14:09:00 | 显示全部楼层
回复 7# baojiewu


呵呵,笔误,忘记删掉了,写不写都一样,print 缺省就是把$_的东西打印出来的

关于$_,你可以看看<learning perl>里面"perl最喜欢的缺省变量$_" 那一段.
具体用的时候还要看你用的命令/函数的帮助信息,查查具体的缺省变量怎么用的,看看别人的例子.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-3-29 20:45 , Processed in 0.032289 second(s), 12 queries , Gzip On, Redis On.

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