필자의 펄 코드 구성에 도움이 필요하다. 서브 루틴 $cmd->ls("$chkdir");
에 대한 호출에서 결과를 추출하고 $dirnm->{path}
키 (예 : 디렉토리 : '/ home/mydir')의 결과를 얻을 수있는 부분이 있습니다.하나의 서브 루틴에서 perl 내 다른 서브 루틴으로 값 전달하기
내가해야 할 것은 SQL 문을 사용하여 DBI 연결에 대한 입력으로 다른 서브 루틴 ('/ 홈/디렉토리')을 초래할 그래서 (sub results_in
)
나는, 그래서이를 구성 어떻게 통과하다 한 하위 루틴에서 다른 하위 루틴으로 호출 된 값을 전달할 수 있습니까?
예제 코드 :
my $DirResults = $cmd->ls("$chkdir"); #$chkdir is directory passed as argument
for my $dirnm (@{$DirResults->{directory}}) {
print "Directory: " . $dirnm->{path} . "\n";
}
#
### Database handle
#
my $dbh_oracle = DBI->connect(
$CFG{oracle_dbi_connect},
$CFG{db_user},
$CFG{db_cred},
{AutoCommit => 0,
RaiseError => 0,
PrintError => 0}) or die ("Cannot connect to the database: ".$DBI::errstr."\n");
my $res_in=results_in($dirnm->{path}); #Here for pseudo code
$dbh_oracle->disconnect();
sub results_in
{
my $sth= $dbh_oracle->prepare(q{
INSERT into mydirs
VALUES (280, '$res_in')}) ||
die ("Cannot connect to the database: ".$DBI::errstr."\n");
$sth->execute;
$sth->finish;
}
호출이 정확합니다. 문제는'$ dirnm'이 루프에만 존재한다는 것입니다. 루프가 한 번만 입력 될 때 수행하려는 작업은 매우 분명하지만 루프를 입력하지 않은 경우 수행 할 작업과 루프를 두 번 이상 입력 할 때 수행 할 작업은 무엇입니까? – ikegami
나는 가능하다면 모든 사람에게'$ dirnm'을 넣고 싶습니다. '$ dirnm'의 결과가 0이라면 모두 종료하십시오. 기본적으로이 테이블에있는 결과를 입력하고 싶습니다. – jdamae