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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10116|回复: 22

[求助] perl中如何实现?[已解决]

[复制链接]
发表于 2012-3-7 11:53:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 damonzhao 于 2012-3-27 09:39 编辑

如何将文件中所有的begin 到 end区间(包括begin和end)的行首加**子符

示例:
gadgds
dffgfds

begin

  fdafa
   dfasdgf

end

转换后:
gadgds
dffgfds

**begin

**  fdafa
**  dfasdgf

**end

如何用perl实现?
发表于 2012-3-8 14:58:21 | 显示全部楼层
本帖最后由 sanxia 于 2012-3-8 15:01 编辑

加一个变量,比如$comment_flag

$InFile=$ARGV[0] or die "Error! Usage: xxx.pl InFile\n";
$OutFile=$ARGV[1] or ($OutFile=$InFile . "_new") ;
open(readIn, "<$InFile") or die "Can't read the file: $InFile.\n";
open(writeOut,  ">$OutFile") or die "Can't write to the file: $OutFile.\n";

my $comment_flag = 0 ;
while($line=<readIn>){
  $line=~/^\s*begin\s*$/ and $comment_flag = 1 ;
  if($comment_flag==1){
    $line =~ s/^/**/;
  }
  printf( writeOut "$line");
  $line=~/^\s*end\s*$/ and $comment_flag = 0 ;
}

close(writeOut);
close(readIn);
发表于 2012-3-10 16:53:45 | 显示全部楼层
楼上是高手。
解决很流畅而且很规范。
定一个。
发表于 2012-3-27 08:28:40 | 显示全部楼层
学习了,谢谢!
 楼主| 发表于 2012-3-27 09:39:41 | 显示全部楼层
回复 3# yinchyang


    多谢了!
发表于 2012-3-27 19:16:16 | 显示全部楼层
学习了
发表于 2012-4-8 21:37:59 | 显示全部楼层
写的不错~~
发表于 2012-4-11 19:33:50 | 显示全部楼层
高手。。。。。。学习中
发表于 2012-4-17 14:34:49 | 显示全部楼层




    这个程序会把begin和end之间的空白行也加上“**”,看起来这时楼主所不需要的。我是初学perl啊,自己仿照这位高手也写了一个程序,欢迎大家扔砖,讨论,多交流才能更快进步!
#!perl -w
$^I ="~";
for my $files (@ARGV){
die "no such file" if not -e $files;
}
my $find = 0;
while(<>){
    $find = 1 if /^\s*begin\s*/;
    s/^(\s*\w+\s*)/\*\*$1/ if $find;
    $find = 0 if  /^\s*end\s*/;
    print;
}
发表于 2012-4-25 15:49:21 | 显示全部楼层
我来写一个, 这种特别好写, 用 .. 操作符,用于某个段落之间,

while ( <> ) {
  if ( /^begin/ ..  /^end/ )  {
       s/^/##/ ;
   }
  print ;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-18 23:01 , Processed in 0.022751 second(s), 9 queries , Gzip On, Redis On.

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