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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1103 | 回復(fù): 0
打印 上一主題 下一主題

學(xué)習(xí)perl總結(jié) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-01-23 09:00 |只看該作者 |倒序瀏覽
{} 是一個block (塊) 執(zhí)行代碼的塊。
[] 是一個列表,指向數(shù)組。
() 是一個參數(shù)列表。
###############################################
$$aaa[0]  ${$aaa}[0]  $aaa->[0]
      $aaa指向數(shù)組第一個元素
###############################################
$$aaa{key}  ${$aaa}{key}   $aaa->{key}
      $aaa指向列表第一個元素。
###############################################
${$aaa{key}}  對%aaa散列解引用。
###############################################
注意:$aaa[3] 與 $aaa->[3]是不一樣的。
前者講: @aaa里的第4個元素。
后者講: 保存在$aaa里數(shù)組引用的第四個元素。
@$aaa = (); # 清除@aaa內(nèi)容。
###############################################
${identifier}; # 和$identifier 一樣
${"identifier"}; # 也是$identifier,不過卻是一個符號引用。
###############################################
在方括弧或花括弧之間,或者在一個閉方括弧或花括弧與圓括弧之間的箭頭是可選的。后者表示間接的函數(shù)調(diào)用
###############################################
一個偽散列是一個指向數(shù)組的任意引用,它的第一個元素是一個指向散列的引用
###############################################
hash 里面沒有存它的方法,這完全是 -> 操作符的功勞。-> 操作符其實也沒有什么神秘之處,它只不過是調(diào)用了一下它右邊的那個 sub(注),并且把左邊的那個引用變量 unshift 到 sub 的參數(shù)列表中去。注:為了正確地找到右邊的那個 sub,它還需要把左邊的那個引用變量 ref 一下取出原先 bless 進去的那個 tag
###############################################
1,new 的名稱不是 Perl 語法的一部分,你完全可以叫 create, construct, build, 或者別的東西。
2,對象也不一定要用 hash 引用來存儲數(shù)據(jù),事實上任何類型的引用都可以,只不過 hash 引用正好方便表示 OOP 里面的“屬性=>值”這種模型而已。事實上,CPAN 上就有一組用數(shù)組引用來構(gòu)造類體系的,更加省空間。
3,Perl 對 OOP 提供的語法很有限,但是支持 OOP 的大多數(shù)概念。這些有限的語法包括 bless 函數(shù)、package 語句、-> 操作符、還有 @ISA 數(shù)組,以及 SUPER UNIVERSAL 等有限的幾個關(guān)鍵字。除此以外我想再沒有別的東西了。
###############################################
bless 的作用是給第一個參數(shù)(必須是個引用)打上一個印記(就好像蓋個戳一樣),而這個印記就標明了這個引用從此以后應(yīng)該屬于哪個類。理解了這個之后,你就明白 bless $self, $class 和 $class = $self 其實是完全不同的東西。bless $self, $class 之后,$class 還是原來的值,$self 也還是原來的值,只不過 $self 的印記變成了 $class 的內(nèi)容。$class = $self 則是把 $class 變成和 $self 值相同的一個變量。
###############################################
perl的內(nèi)置特殊變量:
    $- 當(dāng)前頁可打印的行數(shù),屬于Perl格式系統(tǒng)的一部分
  $! 根據(jù)上下文內(nèi)容返回錯誤號或者錯誤串
  $” 列表分隔符
  $# 打印數(shù)字時默認的數(shù)字輸出格式
  $$ Perl解釋器的進程ID
  $% 當(dāng)前輸出通道的當(dāng)前頁號
  $& 與上個格式匹配的字符串
  $( 當(dāng)前進程的組ID
  $) 當(dāng)前進程的有效組ID
  $* 設(shè)置1表示處理多行格式.現(xiàn)在多以/s和/m修飾符取代之.
  $, 當(dāng)前輸出字段分隔符
  $. 上次閱讀的文件的當(dāng)前輸入行號
  $/ 當(dāng)前輸入記錄分隔符,默認情況是新行
  $: 字符設(shè)置,此后的字符串將被分開,以填充連續(xù)的字段.
  $; 在仿真多維數(shù)組時使用的分隔符.
  $? 返回上一個外部命令的狀態(tài)
  $@ Perl解釋器從eval語句返回的錯誤消息
  $[ 數(shù)組中第一個元素的索引號
  $ 當(dāng)前輸出記錄的分隔符
  $] Perl解釋器的子版本號
  $^ 當(dāng)前通道最上面的頁面輸出格式名字
  $^A 打印前用于保存格式化數(shù)據(jù)的變量
  $^D 調(diào)試標志的值
  $^E 在非UNIX環(huán)境中的操作系統(tǒng)擴展錯誤信息
  $^F 最大的文件捆述符數(shù)值
  $^H 由編譯器激活的語法檢查狀態(tài)
  $^I 內(nèi)置控制編輯器的值
  $^L 發(fā)送到輸出通道的走紙換頁符
  $^M 備用內(nèi)存池的大小
  $^O 操作系統(tǒng)名
  $^P 指定當(dāng)前調(diào)試值的內(nèi)部變量
  $^R 正則表達式塊的上次求值結(jié)果
  $^S 當(dāng)前解釋器狀態(tài)
  $^T 從新世紀開始算起,腳步本以秒計算的開始運行的時間
  $^W 警告開關(guān)的當(dāng)前值
  $^X Perl二進制可執(zhí)行代碼的名字
  $_ 默認的輸入/輸出和格式匹配空間
  $| 控制對當(dāng)前選擇的輸出文件句柄的緩沖
  $~ 當(dāng)前報告格式的名字
  $` 在上個格式匹配信息前的字符串
  $’ 在上個格式匹配信息后的字符串
  $+ 與上個正則表達式搜索格式匹配的最后一個括號
  $ 當(dāng)前進程的有效用戶ID
  $0 包含正在執(zhí)行的腳本的文件名
  $ARGV 從默認的文件句柄中讀取時的當(dāng)前文件名
  %ENV 環(huán)境變量列表
  %INC 通過do或require包含的文件列表
  %SIG 信號列表及其處理方式
  @_ 傳給子程序的參數(shù)列表
  @ARGV 傳給腳本的命令行參數(shù)列表
  @INC 在導(dǎo)入模塊時需要搜索的目錄列表
  $-[0]和$+[0] 代表當(dāng)前匹配的正則表達式在被匹配的字符串中的起始和終止的位置 。

~~~~~~~~~~~~~perl 編譯 exe 工具:perlcc、perlapp、perl2exe、par(
http://par.perl.org
)~~~~~
s///  先做匹配,再做替換,替換在匹配正確之后才生效的。
.*? 不貪多匹配
(aaa)\1 回朔。把aaa放如緩存 代表 aaaaaa.
###########################################################
(?=), look ahead匹配但不吃掉
(?!),下一組文本不match時,才匹配
(?), lood behind, also (?)
$a = "cat housecat catch crazycats";
$a =~ s/(?),使用(…)但不計入反向引用中
(?xims-xims: )
/Answer: ((?i)yes)/; # 'Answer: yes', '…YES', '…Yes', etc
/Answer: ((?-i)yes)/i; # 'answer: yes' only, not "…YES"
(?#)comment, replaced by m/…/x now.
Quote-like operators
?RE? Match only once between reset call.
###########################################################
Define and call an anonymous subroutine
Lvalue subroutine (experimental)
my $subref = sub {$_[0] + $_[1]};
my $add = $subref; # make a copy of subroutine-ref
print &{$add}(1,2), "\t", &$add(1,2), "\t", $add->(1,2);
sub Lsub : lvalue {
my($index)=shift;
$_[$index]; # don't say return $_[$index] here
}
my @a = qw(I my teaching perl.);
$" = " ";
print "@a\n";
Lsub(2, @a) = 'learning'; #函數(shù)返回作值,修改為'learning'
print "@a\n"; # @a的值已經(jīng)被修改
###########################################################
Open a user file
– For read: open(FD, "filename");
– For append: open(FD, ">>filename");
– For pipe read: open(FD, "process |");
– For pipe write: open(FD, "|process");
– +> 截斷文件并打開讀寫+
#############################################################
***last 操作符立即退出當(dāng)前循環(huán),如果有continue塊也不會執(zhí)行。
***next 操作符忽略當(dāng)前循環(huán)的余下語句然后開始一次新的循環(huán)。如果循環(huán)里面有continue子句,那么他將就再重新計算條件之前執(zhí)行,這里continue可以增加循環(huán)變量。
LINE: while (){
next LINE if /^#/;
next LINE if /^$/;
...
} continue {
  $count++;
}
***redo 操作符再不重新計算循環(huán)條件的情況下重新開始循環(huán)語句塊,如果存在continue塊也不會執(zhí)行。
last next redo 不單單用于循環(huán),他們可以用于塊。
goto LABEL 不能跳進任何需要初始化的構(gòu)造,比如子過程或者foreach循環(huán)。她也不能跳進一個已經(jīng)優(yōu)化了的構(gòu)造
-> 是一個中綴解引用操作符.如果右邊是一個[...]數(shù)組下標,一個{...}散列下標,或者一個(...)子過程參數(shù)列表,那么左邊必須是一個對應(yīng)的數(shù)組,散列,或者子過程的應(yīng)用(硬引用和符號引用都行).在一個左值(可賦值)環(huán)境里,如果左邊不是一個引用,那么它必須是一個能夠保存硬引用的位置.這種情況下,引用會為你自動激活.
..和... 當(dāng)操作符處于假狀態(tài)后就不再測試右操作數(shù),和黨操作符處于真狀態(tài)后就不再測試左操作數(shù).
###############################################################
解引用在任何數(shù)組或者散列查找之前發(fā)生(或者說解引用比數(shù)組合散列查找綁定得更緊)
###############################################################
如果試圖給一個不是硬引用的數(shù)值進行解引用,那么該值會被當(dāng)作一個符號引用用,也就是說,該引用被解釋成一個代表某個全局量的名字的字串。
$aaa == ${aaa} != ${'aaa'} (后面的是符號引用)


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/187/showart_236393.html
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP