亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
打印 上一主題 下一主題

ChinaUnix技術(shù)實(shí)踐之三——Perl編程大賽 [復(fù)制鏈接]

論壇徽章:
0
51 [報(bào)告]
發(fā)表于 2011-03-01 12:14 |只看該作者
第7題:
  1. my $secr=int(1+rand 100);
  2. print "Please enter a number between 1 to 100:\n";

  3. while (<STDIN>){
  4. exit if /^\s*$/ or /^(exit|quit)$/ or $secr==$_;
  5. if ($secr<$_) {
  6. print "too high!\n";
  7. next;
  8. } elsif ($secr>$_){
  9. print "too low!\n";
  10. next;
  11. }
  12. }
復(fù)制代碼

論壇徽章:
0
52 [報(bào)告]
發(fā)表于 2011-03-01 12:44 |只看該作者
第6題:
  1. print "please enter some numbers:\n";
  2. chomp($_=<STDIN>);
  3. my @arr=split;
  4. my $aver;
  5. my $sum=0;
  6. map {$sum+=$_;$aver=$sum/@arr;} @arr;
  7. my @bignum=grep {$_ if $_>$aver;} @arr;
  8. print join(" ",@bignum),"\n";
復(fù)制代碼

論壇徽章:
0
53 [報(bào)告]
發(fā)表于 2011-03-01 13:05 |只看該作者
第5題:
  1. opendir my $DIR,"." or die "can't open directary:$!";
  2. my @arr=readdir $DIR;
  3. @arr=sort {-M $a<=>-M $b} @arr;
  4. print join("\n",@arr);
復(fù)制代碼

論壇徽章:
0
54 [報(bào)告]
發(fā)表于 2011-03-01 16:24 |只看該作者
第3題:
  1. my $str='1,2,3,5,6,7,8';
  2. my @arr=split /,/,$str;
  3. my $temp=0;
  4. my $flag=1;
  5. my %hash;
  6. map {if ($_-$temp==1) {push @{$hash{"$flag"}},$_;} else {$flag++;push @{$hash{"$flag"}},$_;} $temp=$_;}  @arr;
  7. foreach my $k (keys %hash){
  8. $_.=$hash{$k}->[0].'-'.$hash{$k}->[-1].',';
  9. }
  10. chop;
  11. print;
復(fù)制代碼

論壇徽章:
0
55 [報(bào)告]
發(fā)表于 2011-03-01 19:29 |只看該作者

論壇徽章:
0
56 [報(bào)告]
發(fā)表于 2011-03-01 23:12 |只看該作者
  1. ### 1題
  2. sub myfunc{
  3.     $x = ...;
  4.     return $x ? 1 : undef;
  5. }

  6. ### 4題
  7. 標(biāo)準(zhǔn)用法和不標(biāo)準(zhǔn)用法的區(qū)別吧

  8. ### 5題
  9. print `ls -t1`;

  10. ### 6題
  11. my @nums = qw(1 3 5 7 -10 0 18);
  12. my @result = grep $_ > eval(join '+', @nums) / ($#nums + 1), @nums;
  13. #print Dumper(\@result);

  14. ### 7題
  15. my $secretNum = int(1 + rand 100);
  16. print "I have a secret number, guess what:\n";
  17. while(<STDIN>){
  18.     exit if(m/^(quit|exit|\s)/i);
  19.     chomp;
  20.     if($_ == $secretNum){
  21.         print "you get it\n";
  22.         exit;
  23.     }
  24.     print $_ > $secretNum ? "too high\n" : "too low\n";
  25. }
復(fù)制代碼

論壇徽章:
0
57 [報(bào)告]
發(fā)表于 2011-03-02 12:08 |只看該作者
第八題
寫(xiě)一個(gè)簡(jiǎn)單的TCP Echo Server,在linux/unix環(huán)境運(yùn)行,偵聽(tīng)在特定端口,接受用戶的網(wǎng)絡(luò)輸入,并返回同樣的數(shù)據(jù)給對(duì)方,能接受quit命令。
基本要求:
(1)無(wú)阻塞IO。
(2)daemon方式運(yùn)行。
(3)能接受kill -HUP重啟信號(hào)。

Usage: ./s.pl { start | stop | reload | restart | help | version | check }

server: s.pl

  1. use strict;
  2. use warnings;
  3. use Daemon::Generic;

  4. newdaemon(
  5.     progname => 'echoserver',
  6.     pidfile => '/tmp/echoserver.pid',
  7.     );

  8. sub gd_run {
  9. use AnyEvent::Socket;
  10. use AnyEvent::Handle;
  11.         my $cv = AE::cv;

  12.         tcp_server undef, 1234, sub {
  13.                 my $hdl;
  14.                 $hdl = AnyEvent::Handle->new(
  15.                         fh => shift,
  16.                         on_read => sub {
  17.                                 $hdl->push_write("sever:");
  18.                                 $hdl->push_write(delete $hdl->{rbuf});
  19.                         },
  20.                         on_eof => sub {},
  21.                 );
  22.         };
  23.         $cv->recv;
  24. }

  25. sub gd_preconfig{}
復(fù)制代碼
client測(cè)試:c.pl

  1. use strict;
  2. use warnings;
  3. use IO::Socket;

  4. my $sock = new IO::Socket::INET (PeerAddr => '127.0.0.1',
  5.                                  PeerPort => 1234,
  6.                                  Proto    => 'tcp');
  7. die "disconnet....$!\n" unless $sock;

  8. print $sock "hello \n";

  9. my $data = <$sock>;
  10. print $data;

  11. exit;
復(fù)制代碼

論壇徽章:
0
58 [報(bào)告]
發(fā)表于 2011-03-02 12:27 |只看該作者
本帖最后由 hitsubunnu 于 2011-03-02 12:28 編輯

第八題 做成方法2  ## POE

  1. use strict;
  2. use warnings;
  3. use Daemon::Generic;

  4. newdaemon(
  5.     progname => 'echoserver',
  6.     pidfile => '/tmp/echoserver.pid',
  7.     );

  8. sub gd_run {

  9. use POE qw(Component::Server::TCP);

  10. POE::Component::Server::TCP->new(
  11.   Alias       => "echo_server",
  12.   Port        => 1234,
  13.   ClientInput => sub {
  14.     my ($session, $heap, $input) = @_[SESSION, HEAP, ARG0];
  15.     $heap->{client}->put("server:".$input);
  16.   }
  17. );

  18. $poe_kernel->run();

  19. }

  20. sub gd_preconfig{}
復(fù)制代碼

論壇徽章:
0
59 [報(bào)告]
發(fā)表于 2011-03-02 13:25 |只看該作者
本帖最后由 surpass_li 于 2011-03-02 13:29 編輯

1. 請(qǐng)正確的精簡(jiǎn)如下代碼。

sub myfunc {
    # $x = ...;

    if ( $x ) {
        return 1;
    } else {
        return;
    }
}
答:
sub myfunc {
        return $x and 1;
}
 


6.傳入一串?dāng)?shù)字并返回所有大于平均值的數(shù)字。
sub greThanAver
{
    my ($average,$sum)=(0,0);
    my @gre=();
    foreach(@_)
    {
        $sum+=$_;
    }
    $average =$sum/@_;
   
    foreach(@_)
    {
        if($_>$average)
        {
            push @gre,$_;
        }
    }
   
    return @gre;
}
7.讓用戶不斷猜測(cè)范圍從1到100的秘密數(shù)字,直到猜中為止。程序應(yīng)該以魔術(shù)公式lnt(1+rand 100)來(lái)隨機(jī)產(chǎn)生秘密數(shù)字。
當(dāng)用戶猜錯(cuò)時(shí),程序應(yīng)相應(yīng)“too high”或者“too low”。如果用戶quit或者exit或者鍵入一個(gè)空白行程序就中止。當(dāng)然如果用戶猜到了,程序也應(yīng)該中止。

#!/usr/bin/perl
use Getopt::Std;
@orig_num;
@guess_num;

sub show_usage() {
        print "Usage: $0 ";
        print "         -p play game ";
        print "         -r Show rules of the game ";
        exit 0;
}

sub show_rules() {
        print "Welcome to This GUESS NUMBER GAME~! ";
        print "====猜測(cè)范圍從1到100的秘密數(shù)字====! ";
        print "=輸入quit或exit或鍵入一個(gè)空白行中止=! ";
}

sub generate_rand() {
        my $seed=time();
        srand($seed);
        my $rand = int(1+rand(100));
        $orig_num = $rand;
}

sub get_guess_number() {
        my $num_tmp;
        print "輸入您猜的數(shù)字: ";
        read(STDIN,$num_tmp);
        chomp($num_tmp);
        return $num_tmp;
        print " ";
}

sub check_res() {        
        if($orig_num > $guess_num) {
                return 1;
        }
        if($orig_num < $guess_num) {
                return -1;
        }
        return 0;

}

sub play_game() {
        generate_rand();
        my $i = 0;
        my $num_guess_tmp;
        while(1) {
                $guess_num = get_guess_number();
                if("$guess_num" eq "quit") {
                        exit 0;
                }
                if("$guess_num" eq "exit") {
                        exit 0;
                }
                if("$guess_num" eq " ") {
                        exit 0;
                }
                $result=check_res();
                if("$result" eq "0") {
                        print "中了! ^_^ ";
                        exit 0;
                }
                $result=check_res();
                if("$result" eq "0") {
                        print "中了! ^_^ ";
                        exit 0;
                }
                if("$result" eq "-1") {
                        print "too high";
                }
                if("$result" eq "1") {
                        print "too low";
                }               
        }
}

sub get_opts() {
        getopts(''hrp'');
        if(defined($opt_p)) {
                play_game();
        }
        elsif(not defined($opt_r)) {
                show_usage();
        }
        if(defined($opt_h)) {
                show_usage();
        }

}

get_opts();

論壇徽章:
0
60 [報(bào)告]
發(fā)表于 2011-03-02 16:54 |只看該作者
這個(gè)有沒(méi)有人想出來(lái)只用正則表達(dá)式就可以完成的?
  1. ### 3題
  2. my $string = '1,2,3,5,6,7,8,10,11,12,13,14';
  3. my ($start, $end) = undef;
  4. my $result = '';
  5. while($string =~ m/(\d+)/g){
  6.     ($start = $end = $1) && next unless $start;
  7.     if($1 - $end == 1){
  8.         $end = $1;
  9.         next;
  10.     }else{
  11.         $result .= (($start == $end) ? "$start," : "$start-$end,");
  12.         $start = $end = $1;
  13.     }
  14. }
  15. $result .= "$start-$end";
  16. print "$result\n";
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP