编程新手。任务是从字符串中提取特定数据,我选择编写代码如下 -
while ($line =<IN>) {
chomp $line;
@tmp=(split /\t/, $line);
next if ($tmp[0] !~ /ch/);
@tgt1=@tmp[8..11];
@tgt2=@tmp[12..14];
@tgt3=@tmp[15..17];
@tgt4=@tmp[18..21];
foreach (1..4) {
print @tgt($_), "\n";
}
我以为@tgt($_)
会被解释为,@tgt1, @tgt2, @tgt3, @tgt4
但我仍然收到@tgt
作为全局符号的错误消息(@tgt1、@tgt2、@tgt3、@tgt4` 已被声明)。
Q1。我误解了 foreach 循环吗?
Q2。为什么 perl 看不到@tgt($_)
@tgt1、@tgt2 ..etc?
Q2。根据经验,这可能是命名变量的不好方法。命名具有相似特征的变量的首选方法是什么?