所以,我是 Perl 的新手。我正在尝试创建一个递归子例程。逻辑似乎很简单:
sub directory_tree
{
my $sth = $dbh->prepare("
SELECT id, org_id, name
FROM media_directories
WHERE
org_id = ?
AND parent = ?
AND bucket = ?
");
$sth->bind_param(1, $_[0]);
$sth->bind_param(2, $_[1]);
$sth->bind_param(3, 'mfsermons.myflock2.com');
$sth->execute;
$result = '';
while(my($id, $org_id, $name) = $sth->fetchrow_array())
{
$result .= "<option value='$id'>$name</option>"; #377
$result .= directory_tree($org_id, $id); #378
}
return $result;
}
$directory_tree = '<select name="folder">';
$directory_tree .= directory_tree($churchid, 0);
$directory_tree .= '</select>';
为什么当我$result
在第 377 行之后打印它等于预期值,但是当我在第 378 行打印它时,什么都没有出现?.= 运算符不应该再次运行该函数,然后附加到该值吗?
我最好的猜测是 Perl 中存在一些我不理解的范围问题,尤其是关于$result
. 但是,对于我的生活,我无法弄清楚出了什么问题,我完全不知道去哪里找!
当我打开错误报告、致命和警告时,没有返回任何内容。我错过了什么可能出了什么问题?