我的问题是关于从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";
}