6.傳入一串?dāng)?shù)字并返回所有大于平均值的數(shù)字。
#########################################
sub hi_everage
{
my ($everage,$sum)=(0,0);
my @high=();
foreach(@_)
{
$sum+=$_;
}
$everage=$sum/@_;
中間的()實(shí)際相當(dāng)于給了后面的列表一個(gè)列表上下文,讓它把@a、@b、@c都攤開,賦值給一個(gè)匿名數(shù)組,并立刻將這個(gè)匿名數(shù)組在標(biāo)量上下文的值返回給$s(9就是@a、@b、@c全部元素的值)
另以splice舉例,In list context, returns the elements removed from the array. In scalar context, returns the last element removed.
如果我想得到的既不是移除的元素?cái)?shù)組,也不是最后一個(gè)元素,而是它移除的元素個(gè)數(shù)
笨的方法是先用一個(gè)臨時(shí)數(shù)組接移除的元素,再把這個(gè)臨時(shí)數(shù)組賦值給標(biāo)量
6.
myfunc(1,2,3,4,5,6,1,8,3,6,1);
sub myfunc{
my @numbers = @_;
my $max;
foreach (@numbers){$max+=$_;}
foreach (@numbers){push(@result,$_) if ($_>$max/@numbers);}
return @result;
}
my %cfg = (
server_port => 8080,
client_timeout => 10,
);
my $program_exit = 0;
main();
exit;
##########################
#主程序
##########################
sub main
{
$SIG{CHLD} = $SIG{INT} = $SIG{TERM} = sub{$program_exit++;};
#創(chuàng)建Socket監(jiān)聽連接
my $listen_socket = IO::Socket::INET->new(
LocalPort =>"$cfg{server_port}",
Listen =>20,
Proto =>'TCP',
Reuse =>1,
Timeout =>$cfg{client_timeout},
) or die $!;
#監(jiān)聽
while (!$program_exit)
{
my $connection = $listen_socket->accept;
next if (!$connection);
if (fork() == 0){process($connection);}
close($connection);
}
exit 0;
}
sub process
{
my $connection = shift;
$connection->autoflush(1);
my $url;
while (!$program_exit)
{
my $data = $connection->getline();
chomp $data;
if ($data =~ /^\s*quit\s*$/){last;}
print $connection $data."\n";
}
$connection->shutdown(2);
}作者: fkiori 時(shí)間: 2011-03-16 16:23
部分代碼與其他朋友的雷同,甚至一樣。沒辦法
看到題目晚。。。
呵呵作者: iLRainyday 時(shí)間: 2011-03-16 17:45
我就摻和第三題吧
#!/usr/bin/perl
use strict;
use warnings;
my $string = '1,2,3,5,6,7,8,10,11,12,13,14';
my ($range) = $string =~ m/(\d+)$/;
my @numbers = (1..$range);
my @keys = split /,/, $string;
my %hash;
@hash{@keys} = undef;
my @missing_numbers = grep {!exists $hash{$_} } @numbers;