我正在研究VoIP软件的脚本,Freeswitch.该脚本将作为侦听套接字的入站消息的实例运行.
我使用Freeswitch提供的示例脚本,开始时,一切正常.
然而,有一点让我失望.
use IO::Socket::INET;
use warnings;
use strict;
my $sock = new IO::Socket::INET ( LocalHost => '127.0.0.1', LocalPort => '8060', Proto => 'tcp', Listen => 1, Reuse => 1 );
die "Could not create socket: $!\n" unless $sock;
for(;;) {
my $new_sock = $sock->accept();
my $pid = fork();
if ($pid) {
close($new_sock);
next;
}
close($new_sock);
}
Run Code Online (Sandbox Code Playgroud)
究竟是什么;;意思?它是在创建套接字时定义的特殊运算符吗?苦苦寻找文档!
如果perlcritic说"没有子回报是错误的",如果真的不需要它们会有什么选择?
我养成了两个显然不好的习惯:
例如,我可能会..
#!/usr/bin/perl
use strict;
use warnings;
@main::array = (1,4,2,6,1,8,5,5,2);
&sort_array;
&push_array;
&pop_array;
sub sort_array{
@main::array = sort @main::array;
for (@main::array){
print "$_\n";
}
}
sub push_array{
for ( 1 .. 9 ){
push @main::array, $_;
}
}
sub pop_array {
for ( 1 .. 3 ){
pop @main::array;
}
}
Run Code Online (Sandbox Code Playgroud)
我不是一直这样做的.但在上面,它是有道理的,因为我可以隔离操作,而不必担心来回传递值,它通常看起来整洁.
但正如我所说,perl评论家说错了 - 因为没有回报......
那么,是否有人能够解释我正在尝试做什么并建议在perl中采用这种编码风格的更好方法?例如.我有点做OOP吗?