gpt4 book ai didi

perl - Perl 脚本中子程序引用的分配

转载 作者:行者123 更新时间:2023-12-05 00:34:02 25 4
gpt4 key购买 nike

我正在从 Randal Schwartz 的 Intermediate Perl 学习 Perl。有人可以解释以下代码中变量 $callback 和 $getter 的赋值吗?

use File::Find;
sub create_find_callbacks_that_sum_the_size {
my $total_size = 0;
return(sub {$total_size += -s if -f}, sub { return $total_size });
}

my %subs;
foreach my $dir (qw(bin lib man)) {
my ($callback, $getter) = create_find_callbacks_that_sum_the_size( );
$subs{$dir}{CALLBACK} = $callback;
$subs{$dir}{GETTER} = $getter;
}

for (keys %subs) {
find($subs{S_}{CALLBACK}, $_);

for (sort keys %subs) {
my $sum = $subs{$_}{GETTER}->( );
print "$_ has $sum bytes\n";
}

我认为 $callback 获取第一个子例程引用的值是否正确:

sub {$total_size += -s if -f}

$getter 获取第二个子例程引用:

sub { return $total_size }

这是列表作业吗?

非常感谢

最佳答案

这是一个列表作业。子例程返回两件事。第一件事进入 $callback,第二件事进入 $getter:

my ($callback, $getter) = create_find_callbacks_that_sum_the_size( );

所以,是的,你的答案是正确的。每个都以在 create_find_callbacks_that_sum_the_size 工厂中创建的匿名子例程之一结束。

关于perl - Perl 脚本中子程序引用的分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411970/

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