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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2982|回复: 7

[求助] perl语法请教

[复制链接]
发表于 2012-2-23 17:34:44 | 显示全部楼层 |阅读模式

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

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

x
请教大家,下面的-p -i -e,这三个参数写不写,有什么区别?


perl -p -i -e 's/\r//' register.txt
 楼主| 发表于 2012-2-23 17:51:01 | 显示全部楼层
1:-e
可以让Perl程序在Perl命令行上运行.
例如,我们可以在Perl命令行上运行"HelloWorld"程序而不用把它写入文件再运行.
$perl-e'print"HelloWorld\n"'

4:-p,和-n一样,但是还会打印$_的内容


如果想在循环的前后做些处理,可以使用BEGIN或ENDblock.下面的这一行计算文件里的字数.

$perl-ne'END{print$t}@w=/(\w+)/g;$t+=@w'file.txt

每一行所有匹配的字放入数组@w,然后把@w的元素数目递加到$t.ENDblock里的print最后输出文件总字数.
还有两个参数可以让这个程序变得更简单.

2:-i
把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件.
如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.
此文件会被用来储存原始文件以免被-i参数覆盖.

这个例子把所有php字符替换为perl:
$perl-i-pe's/\bPHP\b/Perl/g'file.txt
程序读取文件的每一行,然后替换字符,处理后的数据重新写入(即覆盖)源文件.

如果不想覆盖源文件,可以使用
$perl-i.bak-pe's/\bPHP\b/Perl/g'file.txt

这里处理过的数据写入file.txt,file.txt.bak是源文件的备份.
发表于 2012-2-27 22:37:46 | 显示全部楼层
谢谢了!受教!
发表于 2016-8-13 10:07:58 | 显示全部楼层
这里面\r表示什么啊,新手
发表于 2016-9-6 15:10:15 | 显示全部楼层
回复 4# danzhang


\n   new line  
\r   carriage return  同ㄧ行
发表于 2016-9-14 09:46:32 | 显示全部楼层
学习学习了,多谢大牛讲解
发表于 2016-10-30 12:01:24 | 显示全部楼层
命令行直接运行。一个都不能少。
 楼主| 发表于 2016-12-9 15:42:57 | 显示全部楼层
非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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