我想知道是否可以从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;
}
如果可能,这样做的正确方法是什么?
答案 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;
}