使用 perl 逐行从网表中提取数据



我的问题是关于从Perl文件中提取数据。在附件中,有标准格式的网络列表。运行程序后,我将元素放入数组@name_gate但是当我尝试print @name_gate[0]而不是第一个元素时,我得到了整个第一列,同样@name_gate[1]第二列。

所以问题是我再次@name_gate[0]有一个字符串,我想逐个元素访问它。

my @ind;
my $index=0;
my $file = 'netlist.txt';
my $count=0;
my @name_gate;
open my $fh,'<',$file or die "could not open the file '$file' $!";
while (my $line = <$fh>) 
     {
         chomp $line;
         @name_gate = split (/ /,$line); #transforming string into arrays
         print "@name_gate[0]";
     }

上面的代码打印整个列1 2 3 4 至 14。 如何提取单个元素,例如 1、2 或 14 等。这是当前输出

@name_gate[0]这不是

主要问题。因为带有警告(Scalar value @ary[0] better written as $ary[0] at)它会给出结果。

我以为你的问题出在split.因为您的输入文件有多个空格或制表符分隔。 因此,请包括s+或更好的使用t。你会得到结果。

然后始终在使用警告和使用严格放在程序顶部,

while (my $line = <$fh>) 
{
     chomp $line;
      #my @name_gate = split (/ /,$line); #transforming string into arrays
      my @name_gate = split (/s+/,$line);
      #print "@name_gate[0]n";
      print "$name_gate[0]n";
}

最新更新