从子例程返回对象句柄



我想知道是否有可能从Perl程序的子例程返回对象句柄。我将使用一个使用MAIL::IMAPClient

的程序中的特定示例

创建客户对象句柄

my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";

我想从子例程创建这个对象句柄,而不是

my $client = &create_client_object;
sub create_client_object {
  my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";
  return $client;
}

如果可能的话,正确的方法是什么?

是的,效果很好。除了@Miller的评论,我建议你也将$socket, $user$pass作为参数传递给你的函数,而不是从上下文中使用它们:

my $client = create_client_object($socket, $user, $pass);
sub create_client_object {
  my ($socket, $user, $pass) = @_;
  my $client = Mail::IMAPClient->new(
   Socket   => $socket,
   User     => $user,
   Password => $pass,
  )
  or die "new(): $@";
  return $client;
}

最新更新