gpt4 book ai didi

perl - Perl 函数中的变量在函数外有意外的值

转载 作者:行者123 更新时间:2023-12-05 01:16:36 24 4
gpt4 key购买 nike

所以,我是 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>';

为什么当我在第377行打印$result时等于期望值,但是当我在第378行打印时却什么也没有出现? .= 运算符不应该再次运行函数,然后附加到值吗?

我最好的猜测是 Perl 中有一些我不理解的范围问题,特别是关于 $result。然而,对于我的生活,我无法弄清楚哪里出了问题,而且我完全不知道去哪里找!

当我打开错误报告、 fatal error 和警告时,没有返回任何内容。我遗漏了什么可能出错的地方?

最佳答案

使用严格,避免使用全局变量。换句话说:您正在重用全局 $result,在每次调用子例程时重置它的值。

关于perl - Perl 函数中的变量在函数外有意外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com