从子例程返回对象句柄

时间:2014-07-11 01:02:36

标签: perl oop subroutine

我想知道是否可以从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;
}

如果可能,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

是的,这完美无缺。除了@ Miller的评论之外,我建议您也将$socket$user$pass作为参数传递给您的函数,而不是从上下文中使用它们: / p>

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;
}