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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] Tcl Perl编程 的问题

[复制链接]
发表于 2011-8-23 20:20:21 | 显示全部楼层 |阅读模式

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

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

x
tcl.jpg





上面的题目,请高手解题,分别用 Tcl 编程Perl 编程,谢谢
发表于 2011-8-24 17:11:23 | 显示全部楼层
本帖最后由 shack 于 2011-8-26 08:52 编辑

给你答一道,
(2)TCL

proc changeFile {InFile} {
set chan [open $InFile r]
while {[gets $chan line]>=0} {
         if {[lindex $line 0] == "VIOLATED"} {
                 puts [lindex $line end]
         }
}
close $chan
}
 楼主| 发表于 2011-8-25 20:27:15 | 显示全部楼层
回复 2# shack


    呵呵,谢谢,不懂我是不是语气有啥问题,让你误解了
发表于 2011-8-26 16:16:36 | 显示全部楼层
本帖最后由 rice973 于 2011-8-27 11:07 编辑

1)TCL

set src "*.tcl"

proc replace {src} {
        foreach f [glob nocomplain $src] {
                file copy $f $f.old
                set newf [open $f w+]
                set oldf [open $f.old r]
                while {![eof $oldf]} {
                        set line [gets $oldf]
                        puts $line
                        regsub -all "\/fs\/volume" $line "\/s3g\/project\/vol" newline
                        puts $newf $newline
                }
                close $newf
                close $oldf
        }
}

replace $src
发表于 2011-8-27 11:39:22 | 显示全部楼层
1 use File::Copy;
  2
  3 @target = glob "*.tcl";
  4 foreach $f (@target) {
  5   my $newname = $f;
  6   $newname =~ s/\.tcl/\.old/;
  7   rename $f, $newname;
  8   open OLDFD, "<", $newname;
  9   open NEWFD, ">", $f;
10   foreach $line (<OLDFD>) {
11     printf $line;
12     $line =~ s/\/fs\/volume/\/s3g\/project\/vol/g;
13     printf NEWFD $line;
14   }
15   close OLDFD;
16   close NEWFD;
17 }

初学者,练练。
发表于 2011-8-27 11:55:58 | 显示全部楼层
2)perl  
1 open FD, "<", "timing.rpt";
  2 foreach (<FD>) {
  3   if (/^VIOLATED/) {
  4     printf $_;
  5   }
  6 }
  7 close FD;
发表于 2011-9-1 10:30:06 | 显示全部楼层
第二题,perl
#! /usr/bin/perl -w
use strict;

   open (RPT,"< timing.rpt") or die "Cann't open the file: $!";
       foreach (<RPT>) {
          if(/(net\w+)/) {
            print "$1\n";
          }
       }
      close RPT;
我仿真过的。
发表于 2011-9-1 10:54:18 | 显示全部楼层
本帖最后由 fenghu200132030 于 2011-9-1 11:52 编辑

第一题:perl
#! /usr/bin/perl -w
use strict;
   $^I = ".bak";
    while(<>) {
       s#/fs/volume#/s3g/project/vol#;
       print;
     }
文件从命令行输入用*.tcl匹配。
我是新手,程序效率不一定最高,但是是对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-12-20 09:45 , Processed in 0.446789 second(s), 10 queries , Gzip On, Redis On.

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