免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: charmkid
打印 上一主题 下一主题

perl如何判断文件结束 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-16 21:04 |只看该作者
Learning.Perl
看"输入与输出"

论坛徽章:
0
12 [报告]
发表于 2009-12-17 10:08 |只看该作者
原帖由 wanghuanan 于 2009-12-16 21:04 发表
Learning.Perl
看"输入与输出"


我想处理一个文本文件的偶数行,但是下面的程序一直跑不通,哪位大侠能帮我看看。
#!/usr/bin/perl -w
open (INFILE, "diff.txt");
open (OUTFILE, ">Result.txt");

print "Please Input delta T (us):";
$r=<STDIN>;
chomp $r;
$r=$r*0.000001;

$x=0;
$y=1;

while (<INFILE>)

{

while ($x==0)
  {$line=<INFILE>;
   $linebk1=$line;
   $line=~ s/"time" //;
   $time1=$line;
   $line=<INFILE>;
   $x=$line;
   }      

while ($x==1)
  {$line=<INFILE>;
   $linebk2=$line;
   $line=~ s/"time" //;
   $time2=$line;
   $line=<INFILE>;
   $x=$line;
   }      
   

$t=$time2-$time1;

if ($t>$r)
   {print "$y FAILED\n";
    print OUTFILE "$y FAILED\n";
    print OUTFILE "ERROR START: $linebk1";
    print OUTFILE "ERROR ENDED: $linebk2";
    print OUTFILE "\n";
   }
else {print "$y SUCCESS\n";
      print OUTFILE "$y SUCCESS\n";
      print OUTFILE "SUCCESS START: $linebk1";
      print OUTFILE "SUCCESS ENDED: $linebk2";
      print OUTFILE "\n";
     }

$y++

}

close (INFILE);
close (OUTFILE);

论坛徽章:
0
13 [报告]
发表于 2009-12-17 12:37 |只看该作者
还是搞不定……

论坛徽章:
0
14 [报告]
发表于 2009-12-17 12:40 |只看该作者
你用$.啊,  $. % 2 == 0

论坛徽章:
0
15 [报告]
发表于 2010-08-09 15:31 |只看该作者
看小骆驼 defined 就知道了

论坛徽章:
0
16 [报告]
发表于 2010-08-09 20:30 |只看该作者


  1. use strict;
  2. use warnings;


  3. open INFILE,"diff.txt" or die "$!\n";
  4. open OUTFILE,">Result.txt" or die "$!\n";

  5. print "Please input delta T (us):";
  6. chomp ( my $r = <> );
  7. $r *=0.000001;

  8. my $x = 0;
  9. my $y = 1;
  10. my $check = 1;

  11. while <FILE> ) {
  12.         unless ( $check % 2 ) {
  13.                 # 你的操作#
  14.         }
  15.         $check++;
  16. }
  17. close FILE;
  18. close OUTFILE;
复制代码


看书,静下心来看.......

论坛徽章:
0
17 [报告]
发表于 2010-08-10 11:40 |只看该作者
根据楼上的方法写了一个脚本:

#!/bin/env perl

use strict;


open (FH, "<", "/root/userlist.txt") or die "cannot open the file $!\n";

my $check = 1;

while (<FH>){
        chomp;
        if ($check % 2 == 0){
                print "$_\n";
        }
        $check++;
}

仅供参考~~

论坛徽章:
0
18 [报告]
发表于 2010-08-19 11:40 |只看该作者
while <INFILE>,,每执行一次<INFILE>指针就向后移动一行了,所以也许取不到你想要的值吧..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP