如何在 return 语句之后调用另一个子程序
how to call another subroutine after the return statement
如何在 perl 中的 return 语句之后从现有子例程调用另一个子例程。
我不想在 return 语句之前调用,因为它需要时间来呈现。我不想等待。 return 它然后在退出前调用另一个子程序。在 perl 中可以吗?
您可以 fork
和 运行 您的子例程在新进程中,而原始进程正在返回。
sub do_something {
my ($var1, $var2, $var3) = @_;
my $output = ...
if (fork() == 0) {
# child process
do_something_else_that_takes_a_long_time();
exit;
}
# still the parent process
return $output;
}
你的问题被标记为驼鹿,所以这里是你如何做你想做的 method modifier. The after
modifier 在 sub 之后运行,但它的 return 值被忽略。
package Foo;
use Moose;
sub frobnicate {
my $self = shift;
# ...
return 123;
}
after frobnicate => sub {
my ($self, $rv) = @_;
$self->barnicate;
};
1;
现在每当 frobnicate
完成时,都会调用 barnicate
。
如何在 perl 中的 return 语句之后从现有子例程调用另一个子例程。 我不想在 return 语句之前调用,因为它需要时间来呈现。我不想等待。 return 它然后在退出前调用另一个子程序。在 perl 中可以吗?
您可以 fork
和 运行 您的子例程在新进程中,而原始进程正在返回。
sub do_something {
my ($var1, $var2, $var3) = @_;
my $output = ...
if (fork() == 0) {
# child process
do_something_else_that_takes_a_long_time();
exit;
}
# still the parent process
return $output;
}
你的问题被标记为驼鹿,所以这里是你如何做你想做的 method modifier. The after
modifier 在 sub 之后运行,但它的 return 值被忽略。
package Foo;
use Moose;
sub frobnicate {
my $self = shift;
# ...
return 123;
}
after frobnicate => sub {
my ($self, $rv) = @_;
$self->barnicate;
};
1;
现在每当 frobnicate
完成时,都会调用 barnicate
。