root@luis-VirtualBox:~# tail perl.pl
open FILE, "< pinglist1.txt"
or die "Can't open the file:$!";
open FILE1, ">> perl_logfile";
while (<FILE>) {
$lines = join '', <FILE>;
s/^/hehe\:/gm;
print FILE1 }
root@luis-VirtualBox:~# cat pinglist1.txt
hehe
haha
zzz
done
执行程序:
root@luis-VirtualBox:~# ./perl.pl
输出:
root@luis-VirtualBox:~# cat perl_logfile
hehe:hehe
输出为什么是这个?应该是每行前面都打印hehe:啊?怎么实现呢?
谢谢,我也测试成功了。
但是为什么加入“$lines = join '', ;”后,在输出文件log_profile里只输出了第一行:
hehe:hehe?
而且$lines我觉得应该等于全部行,但是实际为什么只等于后三行?
你知道这句话是干什么的么?我总觉得你这里就是把别人句子抄过来用了,却不知其含义。前面不是有while()么,判断就消耗了一句了,然后你成功了。进入循环,你这句话就把剩下的所有行全部通过写在$lines里面了,当然就是最后三行了。而一开始你想加hehe的也只有第一句话,就是你最开始的结果。
其实perl程序虽短,但要注意理解,必要的时候要写注释,以便于以后使用或者他人查看,个人建议
perl,对多行文本替换的问题
lines = join '', <FILE>;这一句不起任何作用,在这里,你可以测试一下,这里$lines等于后3排。先实现输出如下:hehe:hehe hehe:haha hehe:zzz hehe:done 再简单不过,把我前面说的那一行删掉就可以了。我已经测试通过了。
perl中,关于多个文本内容替换
读取和写入不能用同一个handler, 可以先读取内容,替换完后再把结果写入原文件。my @data;open LOG, "< $file" ;while(<LOG>){ s\/hehe\/haha\/g;push @data, $_;} close LOG;open LOG1 ,">$file";foreach(@data) { print LOG1;} close LOG1;...
perl如何替换文本指定内容
【方法一】1.批量替换用sed:sed 's\/a\/b\/g' ##将a 换成b 2.批量替换文件内容方法,命令结构如下:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'3.下面例子将当前目录及所有子目录下的所有pom.xml文件的”http:\/\/repo1.maven.org\/maven2“...
perl问题,处理文本,关于替换
去掉if($_=~tr\/<(.*)>\/\/g){ 中的tr试试,tr的和最后的g有问题,tr只支持c,d,s
perl语言,用正则表达式将一个文本中所有<>之间的字符串替换成1
精通perl精通正则 use strict;use strict;my $string="fdasaaaaaaaa<fsafefasfda dfdsf> fasfasf4gtr";print $string,"\\n";$string=~s\/\\<.*?\\>\/\\<1\\>\/g;对<进行转义\\< >进行转义\\> .代表任意字符 代表任意个数 ?代表非贪婪匹配print $string;...
perl如何打开一个文件,并对其中的字符串进行替换操作?比如 我建一个文...
楼上的方法是对的,perl读写的句柄不能混用,无法在原地做替换,必须输出另外一个文件。如果是linux系统,原地替换可以用sed -i命令~~~
perl 语言写出如何替换一个text文本的最后一行。
你是意思是把第三个#换成别的是吗?一个编辑框里面填有“AB#DEFG ”按钮一个 输入下面代码:.版本 2 .子程序 _按钮1_被单击 编辑框1.内容 = 文本替换 (编辑框1.内容, 3, 1, “a”)我这个是把第三个#换成a 看看是不是你要的效果 采纳吧 ...
如何替换aaabbbccc为abc?(abc代表任意字符)
用正则表达式,如果你装了Uedit,可以在高级->配置-》搜索-》正则表达式引擎选择perl模式。然后选择替换,勾上正则表达式,在查找框输入以下文本 (\\w){3}(\\w){3}(\\w){3} 然后在替换框输入以下文本 1$2$3 就可以把aaabbbccc替换为abc,dddeeefff替换为def。
求教perl代码 foreach my $line (split(\/[\\n\\r]+\/, $sid->before...
解释吗???foreach my $line (split(\/[\\n\\r]+\/, $sid->before())) { } 这是一个枚举语句,split(\/正则\/,文本)的结果是一个数组,表示把文本按照正则表达式划分,\\r\\n表示回车换行,后面的$sid->before()函数结果应该是一段包含多行的文本,split完成的功能就是把文本按行拆分。然后$...
批处理-文本转换
DOS下的批处理功能非常弱,如果是在UNIX下到很容易办到。如果你经常需要处理大量这样的转换,可以考虑用PERL或者JS写个代码来转换。PERL写的就能作为一个命令在批处理里面使用,但是需要你自己安装PERL系统。JS写的就在浏览器里面开两个窗口,复制\/粘贴完成转换工作,无需安装任何软件,你想要哪种形式,我...