如何在 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