잘 모르겠어요 배열에 하나의 값만 저장하면됩니다. 세 개의 값을 저장한다고 생각하지만 배열에 저장하기 전에 단일 문자열로 저장합니다.
는이 같은 코드를 사용할 수 있습니다, 당신의 배열에 세 개의 값을 저장하려면.
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 =();
}
물론 이것은 모두 가장 단순한 제안 사항입니다. 귀하의 코드가 어떻게 구성되어 있는지 전혀 모르겠습니다.
질문이나 문제를 잘 모르겠습니다. [mcve]를 만들어보세요. "$ b changes"란 무엇을 의미합니까? – tinita
'$ b'가 어떻게 변하는 지 어떻게 알 수 있습니까? /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 당신은 string_ ('$ a', 공백,'$ b', 공백,'$ c')의 배열을 배열에 푸시합니다. 세 요소를 푸시하려면'push (@atom, $ a, $ b, $ c);'(따옴표 제외)를 사용하십시오. – PerlDuck
'@atom = qw (aa bb cc); @ atom = ""if ($ atom [1]! ~ m/dd/i); ' – ssr1012