日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Learning Perl 4

發布時間:2024/4/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Learning Perl 4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 控制結構

所有控制結構都可以做條件修飾符:command if ();

unless(){} 等同于if(! ){} unless(){}else{} until(){} 等同于while(! ){} {} 裸塊,可以用來限定my修飾符 if(){}elsif(){}...else{} ++i,i++ foreach (@mylist){print $_}; for(;;){} foreach和for等價,如果沒有分號的for(1..10)就是純正的foreach循環。 循環控制last=break; next=continue; redo=立即返回本次循環的頂端。 通過標簽從內層對外層的循環快進行控制(通過lash, next, redo),例如: LINE: while(<>) { foreach(split) { last LINE if /__END__/; } } 三木運算符 ?: 多分支三目: my $size= ($width < 10) ? "small" : ($width < 20) ? "medium": ($width < 50) ? "large" : "extra-large"; #default 使用邏輯或添加默認值: my $last_name = $last_name{$someone} || '(No last name)'; 2. 模塊:可以從CPAN search或者kobes's search網站上下載 (1). 安裝$perl Makefile.PL PREFIX=/Users/fred/lib #路徑 $make install (2). 使用模塊 use File::Basename my $name = "/usr/local/bin/perl" my $basename = basename $name 加入導入列表import list來指明它提供哪些函數,它就不會給你別的函數了。 use File::Base qw/ basename /; 如果后面為空(),則不引入任何函數。但是可以用全稱的形式訪問: File::Basename::dirname $name; 也可以是qw(:all)。 use File::Spec; use File::Basename; ... my $new_name=File::Spec->catfile($dirname, $basename); rename($old_name, $new_name) or warn "Can't rename '$old_name' to '$new_name'"; CGI.pm 或者#!/usr/bin/perl use CGI qw(:all); print header("text/plain"); #和HTML標簽同名的函數可以提供使用,例如使用h1()輸出H1標記的標題,還可以處理cookie信息,頁面重定向以及多重頁面表單。 DBI.pm use DBI $dbh = DBI->connect($data_source, $username, $password); $sth=$dbh->prepare("SELECT * FROM foo WHERE bla"); $sth->execute(); $st->finish(); $dbh->disconnect(); 3.字符串處理 (1). index($main_str, $sub_str) 返回$sub_str子串的位置(從0開始計算的)。如果沒有找到則返回-1 rindex($main_str, $sub_str) 返回最后一個"$sub_str"出現的位置 (2). substr($main_str, $initial_position, $length) 從$initial_position起取$length長度的字符串 substr($main_str, $initial_position) 直接取到結尾 $initial_position可以用負數相對位置,例如-3表示倒數第三個字符 如果字符串是個變量,那么可以修改字符串被選取的部分。 my $string = "Hello World"; substr($string, index($string, "Hello"))="Goodbye"; print "$string"; #Goodbye, World。而且被取代的字符串不一定要和原有子串長度相同。 substr($string, index($string, "Hello"), 5) =~ s/fred/barney/g (3). sprintf同printf,但它返回處理過的字符串,而不是將它打印出來。用于格式化輸出數據。 日期數據my $date_tag = sprintf("%4d/%02d/%02d %2d:%02d:%02d", $yr, $mo, $da, $h, $m, $s); 財務數據my $financial = sprintf("%.2f", 2.49995); #會四舍五入。 處理大數據: my $number = sprintf "%.2f", shift @_; #四舍五入小數部分 1 while $number =~ s/^(-?\d+)(\d\d\d)/$1,$2/; #數值1僅僅是循環主體占位用。添加逗號 #如果上一次替換成功,循環又會重新開始。直到開頭小于4個數字。這樣的從小數點倒回操作是s///g無法實現的。 $number =~ s/^(-?)/$1\$/; 4.排序 (1).內置的sort是按ASCII碼大小進行排序的,不能實現更多的功能。 (2).需要自己寫比較函數,例如 sub by_number { if ($a < $b) {-1} elseif ($a > $b) {1} else {0} } my @result=sort by_number @somenumber 這個if三路判斷(-1,0,1)有個方便的縮寫: <=> 例如sort {$a <=> $b} @somenumber; (3).哈希按值排序 %my_score = {"barney"=>195, "fred"=>205, "dino"=>30}; sub by_score {$score{$b} <=> $score{$a}} #倒序 my @winners = sort by_score keys %score; (4).多值排序 my @winner = sort by_score_and_name keys %score; sub by_score_and_name { $score{$b} <=> $score{$a} or $a cmp $b #還可以N種條件的or組合 }

轉載于:https://blog.51cto.com/aboocool/588521

總結

以上是生活随笔為你收集整理的Learning Perl 4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。