私のperlコードを構築する助けが必要です。私はサブルーチン$cmd->ls("$chkdir");
への1回の呼び出しから結果を抽出し、キー$dirnm->{path}
(例:ディレクトリ: '/ home/mydir')から結果を得ることができる部分を持っています。私がする必要がどのようなperl内のあるサブルーチンから別のサブルーチンへの値の受け渡し
はなるように、それでは、どのように私はこれを構築します(sub results_in
)SQL文を使用して、DBI接続への入力として別のサブルーチンに(「/ホーム/ DIR」)
をその結果を渡していますあるサブルーチンから別のサブルーチンに呼び出された値を渡すことはできますか?
コード例:
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'はループ内にのみ存在するということです。ループが1回だけ入力されたときに何をしたいのかははっきりしていますが、ループが入力されていないときに何をしたいのですか?ループが複数回入力されたときに何をしたいですか? – ikegami
私はそれが可能なら誰でも見つけられる '$ dirnm'を挿入したいと思います。 '$ dirnm'の結果が0の場合は、すべて一緒に終了します。私は基本的に私がこのテーブルに見つけるすべての結果を入力したいと思います。 – jdamae