假设我有一个数组@atom。我正在推送三个元素$a
,$b
,$c
(分别从pdb文件中提取的残留名称,链和残基编号)到该数组中。例如,$b
的值为 AAAAAAAAA , BBBBBBB , CCCCCCC < /强> 的。每次$b
更改时如何清空数组?
数组如下,
push(@atom,"$a $b $c");
答案 0 :(得分:3)
当您只在其中存储单个值时,我不确定您使用数组的原因。您认为存储了三个值,但是在将它们存储到数组中之前,您将它们放在一个字符串中。
要在数组中存储三个值,可以使用以下代码:
my @atom = ($residue_name, $chain, $residue_number);
(请注意,我还更改了您的变量名。$a
,$b
和$c
是变量的可怕名称,$a
和$b
是特殊的Perl的变量,不应在随机代码中使用。)
我真的不知道你在这里做了什么,但在我看来,将这些数据存储在哈希中会更有意义。
my %atom = (
residue_name => $residue_name,
chain => $chain,
residue_number => $residue_number,
);
当然,这只是猜测,因为我不知道您需要对数据做些什么 - 但编程的一个重要部分是使您的数据结构正确。
但是现在让我们假设您仍在使用原始数组并且您想要a)查看$chain
变量是否已更改其值并且b)清空该数组点。您需要编写如下代码:
my @atom = ($residue_name, $chain, $residue_number);
# Store the current value of $chain
my $original_chain = $chain;
然后,稍后,您需要检查值是否已更改并采取适当的措施。
if ($chain ne $original_chain) {
@atom = ();
}
当然,这只是最好的建议。我不知道你的代码是如何构建的。
答案 1 :(得分:1)
假设$ a $ b $ c在循环中被读取并被推入数组
const