gpt4 book ai didi

perl - 在perl中如何在不使用XS的情况下写入调用者的变量?

转载 作者:行者123 更新时间:2023-12-04 07:18:14 25 4
gpt4 key购买 nike

我正在围绕一些旧代码编写单元测试,并发现需要围绕 Apache2::Request 的 read() 编写一个模拟。方法

my $r = Apache2::Request->new(...);

$r->read(my $buf, $len);

有没有办法在 Perl 中编写一个函数来填充 $buf ?我很确定唯一的方法是使用带有**的 XS 代码,但我想我至少会先问一下。

使用 Apache2::Request 直接导致了这一点,因此我想模拟它。
perl: symbol lookup error: .../APR/Request/Apache2/Apache2.so: 
undefined symbol: modperl_xs_sv2request_rec

最佳答案

在 Perl 子程序或方法中,参数通过 @_ 传递大批。此数组中的元素是调用子程序中变量的别名。

常见的开箱方式@_是通过制作这样的副本:

my($self, $buf, $len) = @_;

所以分配给 $buf在这种情况下将不起作用,因为您只修改了变量的副本。但是如果直接修改 @_中的值那么这将影响调用者的变量:
$_[1] = 'some data';

关于perl - 在perl中如何在不使用XS的情况下写入调用者的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751635/

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