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