|
#Chapter1 簡介 #!/usr/bin/perl -w
use strict; use 5.010; my @lines = `perldoc -u -f atan2`; foreach (@lines) { s/\w<([^>]+)>/\U$1/g; print; } #Chapter2 標(biāo)量數(shù)據(jù) #!/usr/bin/perl -w
use strict; use 5.010; my $what = "brontosaurus steak"; my $whats = "hello"; my $n = 3; print "fred ate $n $whats.\n"; print "fred ate $n ${what}s.\n"; print "fred ate $n $what"."s.\n"; print 'fred ate ' . $n . ' ' . $what."s.\n"; #!/usr/bin/perl -w
use strict; use 5.010; my $alef = chr(0x05D0); my $alpha = chr(hex('03B1')); my $omega = chr(0x03C9); my $code_point = ord('? '); print "$alef\t$alpha\t$omega\t$code_point"; # if 控制結(jié)構(gòu)
#!/usr/bin/perl -w use strict; use 5.010; my @names= qw \barney fred wilam dino\; foreach my $name(@names) { if ($name gt 'fred') { print"$name comes after 'fred' in sorted order.\n"; } } #!/usr/bin/perl -w
use strict; use 5.010; my @names1= qw \barney fred wilam dino\; foreach my $name(@names1) {
if ($name gt 'fred') { print"$name comes after 'fred' in sorted order.\n"; } else { print "$name does not come after 'fred'.\n"; print "Maybe it's the same string, in fact.\n"; } } #布爾值
#!/usr/bin/perl -w use strict; use 5.010; my @names2= qw \barney fred wilam dino\; my $is_bigger; foreach my $name(@names2) { $is_bigger = $name gt 'fred'; if ($is_bigger) { print"$is_bigger comes 1.\n"; } else { print "$is_bigger does 0\n"; print "$is_bigger is maybe 0.5\n"; } } #!/usr/bin/perl -w
use strict; use 5.010; my @names3= qw \barney fred wilam dino\; my $is_bigger1; foreach my $name(@names3) { $is_bigger1 = $name gt 'fred'; if (!$is_bigger1) { print"$is_bigger1 comes 1.\n"; } else { print "$is_bigger1 does 0\n"; print "$is_bigger1 is maybe 0.5\n"; } } #獲取用戶輸入
#!/usr/bin/perl -w use strict; use 5.010; my $line=<STDIN>; if ($line eq "\n") { print "That was just a blank line!\n"; } else { print "That line of input:$line"; } #chomp操作符
#!/usr/bin/perl -w use strict; use 5.010; my $text="a line of text\n\n\n"; my $txt = chomp($text); print "$txt : How are you!"; #!/usr/bin/perl -w
use strict; use 5.010; my $food=<STDIN>; my $betty = chomp $food; print "$betty : How are you!"; #while控制結(jié)構(gòu)
#!/usr/bin/perl -w use strict; use 5.010; my $count = 0; print "count is now: "; while ($count < 10) { $count += 2; print "$count "; } print "\n"; # undef值
#!/usr/bin/perl -w use strict; use 5.010; my $n = 1; while ($n < 10) { my $sum += $n; $n += 2; } print "The total was $sum.\n"; #defined函數(shù)
#!/usr/bin/perl -w use strict; use 5.010; my $madonna = <STDIN>; if (defined($madonna)) { print "The input was : $madonna"; } else { print "No input availble!\n"; } #Chapter3 列表與數(shù)組
#!/usr/bin/perl -w use strict; use 5.010; (my $fred, my $barney, my $dino) = ("flintstone", "rubble", undef); ($fred, $barney) = ($barney, $fred); my @rocks = qw/ bedrock slate lava/; #$dino = "granite"; my @tiny = (); my @quarry = (@rocks, "crushed rock", @tiny, $dino); #!/usr/bin/perl -w
use strict; use 5.010; my @array = 5..9; my $fred = pop(@array); print "$fred (@array)\n"; my $barney = pop @array; print "$barney (@array)\n"; pop @array; print "@array\n"; push(@array, 0); print "@array\n"; push @array, 8; print "@array\n"; push @array, 1..10; print "@array\n"; my @others = qw/9 0 2 1 0/; push @array, @others; print "@array"; #!/usr/bin/perl -w
use strict;
use 5.010; my @array = qw# dino fred barney #; my $m = shift(@array); print "$m (@array)\n"; my $n = shift @array; print "$n (@array)\n"; shift @array; print "@array\n"; my $o = shift @array; print "$o (@array)\n"; unshift(@array, 5); print "@array\n"; unshift @array, 4; print "@array\n"; my @others = 1..3; unshift @array, @others; print "@array"; #!/usr/bin/perl -w
use strict; use 5.010; my @array = qw#pebbles dino fred barney betty#; my @remove = splice @array, 1, 2; print "Aremove : @remove\tArray : @array\n"; my @removed = splice @array, 1, 2, qw(wilam);
print "Aremoved : @removed\tArray : @array\n"; #字符串中數(shù)組內(nèi)插 #!/usr/bin/perl -w my @rocks=qw{flintstone alate rubble}; print "quartz @rocks limestone\n"; my @empty;
my @rocks=qw{flintstone alate rubble}; foreach my $rocks (@rocks){ print "quartz $rocks limestone\n"; } print "Three rocks are: @rocks.\n"; print "There's nothing in the (@empty) parents here..\n"; my $email;
$email="fred@bedrock.edu"; print "$email\n"; $email="fred\@bedrock.edu"; print "$email\n"; $email='red@bedrock.edu'; print "$email\n"; my @fred=qw(hello dolly);
my $y=2; my $x; $x="This is $fred[1]'s place"; print "x1=$x\n"; $x="This is $fred[$y-1]'s place"; print "x2=$x\n"; $y="2*4";
$x="This is $fred[$y-1]'s place"; print "x3=$x\n"; my @fred=qw(eating rocks is wrong);
$fred="right"; print "this is $fred[3]\n"; print "this is ${fred}[3]\n"; print "this is $fred"."[3]\n"; print "this is $fred\[3]\n"; foreach $rock(qw/bedrock slate lava/)
{ print "One rock is $rock.\n"; } my @rocks=qw/bedrock slate lava/;
foreach my $rock(@rocks) { $rock="\t$rock"; $rock.="\n"; } print "The rocks are:\n",@rocks; #Perl最喜歡的默認(rèn)變量: $_
foreach(1..10){ print "I can count to $_\n"; } $_="Tabba dabba doo\n\n";
print; #reverse
@fred=6 .. 10; print "@fred\n"; @barney = reverse(@fred); print "@barney\n"; @wilma=reverse 6 .. 10; print "@wilma\n"; @fred = reverse @fred; print "@fred\n"; #sort
my @rocks=qw/bedrock slate rubble grsanite/; print "@rocks\n"; my @sorted=sort(@rocks); print "@sorted\n"; my @back=reverse sort @rocks; print "@back\n"; @rocks=sort @rocks; print "@rocks\n"; my @numbers=sort 97 .. 102; print "@numbers\n"; #!/usr/bin/perl -w
use strict; @rocks=qw/bedrock slate rubble granite/; @sorted=sort@rocks; print("@sorted\n"); #each
#! c:\perlfile -w use strict; use 5.012; my @rocks=qw/bedrock slate rubble grsanite/; while (my($index, $value) = each @rocks) { say "$index: $value"; } #! c:\perlfile -w
use strict; use 5.012; my @rocks=qw/bedrock slate rubble grsanite/; foreach my $index (0..$#rocks){ say "$index: $rocks[$index]"; } #context標(biāo)量上下文與列表上下文
$something=3; $q=4+$something; print("$q\n"); my @people=qw(fred barney betty dandong);
my @sorted=sort @people; print("@sorted\n"); my $number=42+@people;
print("$number\n"); #在標(biāo)量上下文中使用產(chǎn)生列表的表達(dá)式
my @backwards=reverse qw/yabba dabba doo/; print("@backwards\n"); my $backwards=reverse qw/yabba dabba doo/; print("$backwards\n"); #在列表上下文中使用產(chǎn)生標(biāo)量的表達(dá)式
#強(qiáng)制指定標(biāo)量上下文
my @rocks=qw(talc quartz jade obsidian); print "How many rocks do you have?\n"; print "I have ",@rocks, " rocks!\n"; #WRONG print "I have ",scalar @rocks, " rocks!\n"; #列表上下文的<STDIN>
#file結(jié)尾 Unix Ctrl+D DOS Windows Ctrl+Z #變長參數(shù)列表
#!/usr/bin/perl -w use 5.012; use strict; my @rocks = qw/12 34 27/; max(); sub max { if (@_ != 2) { print"WARNING! &max should get exactly two arguments!\n"; } else { print"quitS\n";} } #習(xí)題 #1 #! c:\perlfile -w use strict; use 5.012; print "Ente some lines, then press Ctrl-Z: \n"; print reverse <STDIN>; #2
#! c:\perlfile -w use strict; use 5.012; my @names = qw/fred betty barney dino wilma pebbles bamm-bamm/;#when input one number,enter print "Ente some numbers from 1 to 7, one per line, then press Ctrl-Z: \n"; chomp( my @numbers = <STDIN> ); foreach(@numbers){ print "$names[$_ - 1]\t"; } #3 #! c:\perlfile -w use strict; use 5.012; chomp(my @lines = <STDIN>); my @sorted = sort @lines; print "@sorted\n"; #! c:\perlfile -w
use strict; use 5.012; print sort <STDIN>; #Chapter4 子程序
#定義子程序
my $n; sub marine { $n += 1; print "Hello, sailor number $n !\n" } #調(diào)用子程序
&marine; &marine; &marine; &marine; #通過scalar獲取數(shù)組長度
#!/usr/bin/perl -w use strict; use 5.012; use warnings; my @array = qw(this program shows haw to use scalar funcation to get the array length);
my $length = scalar(@array); print $length; #返回值
#!/usr/bin/perl -w use strict; use 5.012; chomp(my ($fred, $barney) = <STDIN>); sub sum_of_fred_and_barney { print "Hey, you called the sum_of_fred_and_barney subroutine !\n"; $fred + $barney; print "Hey, I'm returning a value now!\n"; } my $wilam = &sum_of_fred_and_barney; print "\$wilam is $wilam.\n"; my $betty = 3 * &sum_of_fred_and_barney; print "\$betty is $betty.\n"; sub large_of_fred_or_barney {
if ($fred>$barney) { $fred; }else{ $barney; } } $fred=123;$barney=345;
$wilam=&large_of_fred_or_barney; print "\$wilam is $wilam\n"; #參數(shù)
sub max{ if ($_[0]>$_[1]) { $_[0]; }else{ $_[1]; } } my $n = &max(10,15); print "Max number is $n\n"; #!/usr/bin/perl -w
use strict; use 5.012; my $wilam = &large_of_fred_or_barney_or_dino(12,7,25);
print "\$fred or \$barney or \$dino max is $wilam.\n"; sub large_of_fred_or_barney_or_dino{
if ($_[0]>$_[1] && $_[0]>$_[2]) { $_[0]; }elsif ($_[1]>$_[2]){ $_[1]; } else { $_[2]; } } #子程序 私有變量
#!/usr/bin/perl -w use strict; use 5.012; my $mv=&max(12,7); print "\$mv. $mv\n"; sub max { my($m, $n); ($m, $n) = @_; if ($m > $n) {$m} else{$n} } #變長參數(shù)列表
#!/usr/bin/perl -w use strict; use 5.012; my $mv = &max(7, 3, 12); print "\$mv's max is $mv\n"; sub max { if(@_ != 2){ print "WARNING! &max should get exactly two arguments!\n"; } my($m, $n, $p); ($m, $n, $p) = @_; if ($m > $n && $m >$p) {$m} elsif($n > $p){$n} else{$p} } #改進(jìn)的&max子程序
sub max { my ($max_so_far) = shift @_; foreach(@_){ if ($_ > $max_so_far){ $max_so_far = $_; } } $max_so_far; } my $maximum = &max(3,5,10,4,6); print "Max value is : ", $maximum,"\n"; #空參數(shù)列表 #關(guān)于詞法(沒有)變量 foreach(1..10){ my($square) = $_ * $_; print "$_ squared is $square.\n"; } #!/usr/bin/perl -w
use strict; use 5.012; foreach my $rock (qw/bedrock slate lava/){ print "One rock is $rock.\n"; } #use strict編譯指令
#return操作符
#!/usr/bin/perl -w use strict; my @names = qw/ fred barney betty dino wilam pebbles bamm-bamm/; my $result = &which_element_is("dino", @names); sub which_element_is {
my($what, @array) = @_; foreach(0..$#array){ if ($what eq $array[$_]) { return $_; } } -1; } my @names = qw/fred barney betty dino Wilam pebbles bam-bamn/;
my $result = &which_element_is("fred",@names); sub which_element_is{ my($what,@array) = @_; foreach(0..$#array){ if($what eq $array[$_]){ print $_, " ---> ", $array[$_]; return $_; } } print "Error"; -1; } #省略與號(hào) sub division { $_[0] / $_[1]; } my $quotient = division 355, 113; print "\$quotient is $quotient.\n"; #!/usr/bin/perl -w
use strict; use 5.012; sub chomp { print "Much, much!\n"; } &chomp; #非標(biāo)量返回值
#!/usr/bin/perl -w use strict; use 5.012; my $fredman = 5; my $barneyman = 10; my @c = &list_from_fred_to_barney ($fredman,$barneyman); sub list_from_fred_to_barney {
my ($fred,$barney) = @_; if ($fred < $barney) { #Cont upwards from $frd to $barney $fred..$barney; } else { #Count downwards from $fred to $barney reverse $barney..$fred; } } print "@c\n"; #持久性私有變量 #!/usr/bin/perl -w use strict; use 5.012; sub marine{ state $n = 0; my $name = $_[0]; $n+=1; print "Hello, sailor number ", $n, " <---> ", $name, " !\n"; } marine("dino"); marine("barnet"); marine("fred"); marine("wiliam"); #!/usr/bin/perl -w
use strict; use 5.012; running_sum(5, 6); running_sum(1..3); running_sum(4); sub running_sum {
state $sum = 0; state @numbers; foreach my $number (@_) { push @numbers, $number; $sum += $number; } say "The sum of (@numbers) is $sum"; } #習(xí)題 #1 #! c:\perlfile -w use strict; use 5.012; my @fred = qw(1 3 5 7 9); print "\@fred is @fred\n"; my $fred_total = total(@fred); print "The total of \@fred is $fred_total\n"; print "Enter some numbers on separate lines: "; my $user_total = total(<STDIN>); print "The total of those numbers is $user_total.\n"; sub total{
my $sum; foreach(@_){ $sum += $_; } $sum; } #2 #! c:\perlfile -w use strict; use 5.012; my @numbers = 1..1000; my $number_total = total(@numbers); print "The total of (1...1000) is $number_total\n"; sub total{
my $sum; foreach(@_){ $sum += $_; } $sum; } #3
#! c:\perlfile -w use strict; use 5.012; my @numbers = 1..1000; my $number_total = total(@numbers); my $number_average = average(@numbers); my @number_above_average = above_average(@numbers); print "The total of (1...1000) is $number_total\n"; print "The average of (1...1000) is $number_average\n"; print "The above_average of (1...1000) is @number_above_average\n"; sub total{ my $sum; foreach(@_){ $sum += $_; } $sum; } sub average { if (@_ == 0) {return} my $count = @_; my $sum = total(@_); $sum/$count; } sub above_average{ my $average = average(@_); my @list; foreach my $element (@_) { if ($element > $average) { push @list, $element; } } @list; } #4 #!c:/perl -w use strict; use 5.010; greet('Fred'); greet('Barney'); sub greet { state $last_person; my $name = shift; print "Hi $name! "; if (defined $last_person) { print "$last_person is also here!\n"; } else { print "You are the first one here!\n"; } $last_person = $name; } #5 #!c:/perl -w use strict; use 5.010; greet('Fred'); greet('Barney'); greet('Wilma'); greet('Betty'); sub greet { state @names; my $name = shift; print "Hi $name! "; if (@names) { print "I've seen: @names !\n"; } else { print "You are the first one here!\n"; } push @names, $name; } |
|
|