- 论坛徽章:
- 0
|
本帖最后由 skyheight 于 2017-07-10 09:34 编辑
先说一下脚本的用途。
①通过字符串匹配找到红框所示的字符串所在的行数。
②得到篮框所示的数组。
③得到数组第一列的数据,为最终数据。并进行后续的数据判断等。。。
尝试写了一个脚本,但是在第②步的时候,出现报错信息:“Use of uninitialized value $array[0] in join or string at C:\Users\61068\Desktop\test\ring_test.pl line 33, <FH> line 7684.”
请问应该如何解决?
另外第②步得到的两列数据,如何处理得到第一列的数据呢?
![]()
- #!/usr/bin/perl
- use warnings;
- use File::Spec::Functions;
- use File::Copy;
- $searchdir="C:/Users/61068/Desktop/test"; #指定源文件夹路径
- $str1=" Average Ring size"; #指定欲匹配的字符串1
- $str2=" Ring size Number"; #指定欲匹配的字符串2
- opendir(DIRHANDLE,$searchdir) || die "Cann't open $searchdir !";
- while($file=readdir DIRHANDLE) {
- if (-d "$searchdir/$file") { #寻找字符串对应的行数
- print "$searchdir/$file is a directory!\n";
- } else {
- open(FH, "$searchdir/$file") || die "cann't open $searchdir/$file !\n";
- $lines1=0;
- $lines2=0;
- my @data_raw=\*FH;
- while ($LINE=<FH>) {
- $back1=rindex($LINE,$str1);
- $back2=rindex($LINE,$str2);
- if ( $back1 != -1 ) {
- $lineB=$lines1-3;
- }
- if ($back2 != -1){
- $lineA=$lines2+1;
- }
- $lines1+=1;
- $lines2+=1;
- }
- print "Ring size data of $file lies between line$lineA and line$lineB.\n"; #输出数据所在的行数
- my @array=@data_raw[$lineA..$lineB]; #获得数据
- print "@array\n";
- }
- }
- close(FH);
- closedir(DIRHANDLE);
复制代码
|
|