使用Perl

时间:2018-06-20 10:01:06

标签: linux perl

我对Perl非常陌生。我有一个名为test.txt的文件,以下代码显示了文件中的数据

test       count    seed    

in          5       100
checks      5       100  
comb        5       100
reload      5       100 
reset       5       100

文件中有3列,分别是测试,计数和种子。首先,我想读取测试名称“ in”,然后再将5和10存储到一个变量中,例如$ test = in,$ count = 5和$ seed = 100,因为我将这些称为将变量保存到另一个文件中,这就是为什么我要存储变量,然后再进行检查,梳理,重新加载和重置的原因。每次都应该调用test,并且必须将其存储到声明的变量中。
我可以读取该文件,但无法执行此操作。最后,我将打印这些值以查看是否存储的值。

最终我的大脑得到了答案,这是代码

while($line=<RD>)
{
    if($line=~m/^\#\w+/)                        
    {
    }
    elsif($line=~m/^\s*\w+/)                    
    {
        $line1=$&;                      
        $line1=~s/\s+//g;                   
        #print "$line1\n";
        push(@arr,split(" ",$line));
        $test_count=$arr[1];
        for($i=1;$i<=$test_count;$i=$i+1)
        {
            print "make $arr[0] $arr[2] $arr[3] $arr[4]\n";
        }
    $#arr=-1;
    }
}

1 个答案:

答案 0 :(得分:2)

您说:

  

我想在那之后将5和10存储到一个变量中   不同的变量,例如$ test = in,$ count = 5和$ seed = 100

我敢打赌这不是你想要的。我敢打赌,将数据存储在复杂的数据结构中将对您有用得多。像这样:

my @data;
my @cols;

# Assuming you've opened the file and stored
# the filehandle in $fh
while (<$fh>) {
  # Skip lines without any data
  next unless /\S/;

  if ($. == 1) {
    @cols = split;
    next;
  }

  my %row;
  @row{@cols} = split;
  push @data, \%row;
}

由于您没有努力尝试解决问题(或者至少没有显示任何努力的证据),所以我不会花时间向您解释我的解决方案。通过阅读perldoc perldsc,您会获得一些有用的信息。