私は配列@atomを持つことができます。私はその配列に3つの要素$a
、$b
、$c
(pdbファイルからそれぞれの残基の名前、鎖と残基番号を取得)を押しています。例えば、$b
は値AAAAAAAAA、BBBBBBB、CCCCCCCを有しています。 $b
が変更されるたびに配列を空にする方法は?配列の値が変更されたときに配列を空にする方法は?
次のように配列され、
push(@atom,"$a $b $c");
私は配列@atomを持つことができます。私はその配列に3つの要素$a
、$b
、$c
(pdbファイルからそれぞれの残基の名前、鎖と残基番号を取得)を押しています。例えば、$b
は値AAAAAAAAA、BBBBBBB、CCCCCCCを有しています。 $b
が変更されるたびに配列を空にする方法は?配列の値が変更されたときに配列を空にする方法は?
次のように配列され、
push(@atom,"$a $b $c");
に押され、配列内に単一の値だけを格納している場合あなたは3つの値を格納していると思いますが、それらを配列に格納する前に1つの文字列に入れています。あなたの配列内の三つの値を格納する
、あなたはこのようなコードを使用することがあります:。
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 =();
}
もちろん、これはすべての提案のほんの一例です。私はあなたのコードがどのように構造化されているか分かりません。
$ $ bは$ cを想定すると、使用している理由は、私はよく分からないループで読み込み、配列
while (...) {
# read $a $b $c
if ($b ne $last_b) {
@atom =() # atom is affected to a new empty array
}
push @atom, ...
$last_b=$b
}
私は質問/その問題を理解していません。 [mcve]を作成してみてください。 "$ b changes"はどういう意味ですか? – tinita
'$ b'がどのように変わるのでしょうか? ///あなたの配列に3つの要素をプッシュしていません。あなたはstring_( '$ a'の定数、空白、' $ b'、空白、 '$ c')をあなたの配列にpushしています。 3つの要素をプッシュするには 'push(@atom、$ a、$ b、$ c);'(引用符なし)を使います。 – PerlDuck
'@atom = qw(aa bb cc); @ atom = "" if($ atom [1]!〜m/dd/i); ' – ssr1012