저는 기존의 perl 스크립트를 일반화하고 있습니다. 즉, 동시에 많은 인스턴스에서 작동하게합니다. 기본적으로 이것은 모델링 스크립트의 매개 변수 스캔 기능입니다. 스캔은 단일 매개 변수를 수행하며 모두 수행해야합니다. 이미 존재하는 스크립트 (관심이 있다면 bionetgen에서 scan_var.pl이라고 함)는 인수가 많습니다. 그 중 일부는 선택 사항입니다.perl에서 시스템 함수 내에서 명령 행의 선택적 인수를 사용합니다.
다음은 매개 변수는 기본 설정
#execute the parameter scan with each variable individually
foreach $var_name (@var_names){
my $param = shift @var_names;
system ("perl", $scan_var_location, $model, $param, $min_value, $max_value, $NPTS);
}
하지만 지금은 선택적 인수에 구문 분석
GetOpt::Long
모듈을 사용하려면 스캔 구현에 성공한 것입니다. 지금까지 내 코드는 다음과 같습니다.
# some default parameters
my $log = 0;
my $t_end = 20;
my $n_steps = 1;
my $steady_state = 0;
my $method = "\"ode\"";
my $verbose = 0;
my $prefix;
my $options = GetOptions (
'verbose' => \$verbose, #boolean
'log' => \$log, #boolean
'n_steps:i' => \$n_steps, #integer
'steady_state' => \$steady_state, #boolean
'method:s' => \$method, #string
't_end:i' => \$t_end, #integer
'prefix:s' => \$prefix string
);
#execute the parameter scan with each variable individually
foreach $var_name (@var_names){ #iterates through a list stored in $var_names(not shown for concise-ness)
my $param = shift @var_names;
system ("perl", $scan_var_location, #required value, directory
$options, #optional command line arguments - corresponds to the list above
$model, #required command line value (directory)
$param, #list iterated over
$min_value, #requierd integer
$max_value, #required integer
$NPTS #required integer
);
}
이것은 다소 잘못되었습니다. 아무도 수정에 대한 제안이 있습니까?
건배
* 항상 *'엄격한 사용; 경고를 사용하라. 문제를 자세히 설명해주십시오. – Biffen
'GetOptions'에 대한 각 매개 변수 쌍을 별도의 줄에 넣으면 코드를 훨씬 쉽게 읽고 디버깅 할 수 있습니다. 그것으로 당신은''n_steps : i '=> \ \ $ n_steps' '를 가지며 추가 백 슬래쉬는 불필요합니다. – Borodin
'$ options'의 내용을 어떻게 하시겠습니까? – toolic