perl記事本
perl記事本
1. 'yu' x 3 # print yuyuyu
2.print "yu jian ${age}s" # 加{} 促使變量不會(huì)變成$ages
3. 4 ** 2 #4的平方
4.(1..5) # -->(1,2,3,4,5)
1. 'yu' x 3 # print yuyuyu
2.print "yu jian ${age}s" # 加{} 促使變量不會(huì)變成$ages
3. 4 ** 2 #4的平方
4.(1..5) # -->(1,2,3,4,5)
5.qw ( yu jian's book) # 簡(jiǎn)潔,更少輸入
6.($yu,$jian)=($jian,$yu) # 值互換
7.($yu,$jian)=qw(yu jian) # 賦值
8.@array=qw/yu jian/; #數(shù)組
9.@array=5..9;
$yu=pop(@array) # $yu=9 and @array=(5,6,7,8)
$yu=pop @array # $yu=8 and @array=(5,6,7)10.如果數(shù)組為空 pop不會(huì)報(bào)錯(cuò),什么也不返回,直接返回undef
11.push(@array,0) # @array=(5,6,7,0)12.pop和push都操作數(shù)組末尾
13.shift和unshift是對(duì)數(shù)組的開(kāi)始端操作
14.$_ perl的默認(rèn)變量
for(1...10){
print $_; # $_ = 1 or 2 or 3...
}
15.perl會(huì)正確處理上下文
@people=qw{yu gao};
@list=@people #得到列表
$n=@people #得到人數(shù)2
16.scalar @array #scalar 導(dǎo)致切換為標(biāo)量上下文
@array =qw/yu jian gao su/;
print "love is ".@array."\n"; #love is 4
print "love is ",@array,"\n"; #love is yujiangaosu
print "love is ".scalar @array,"\n";#love is 4
17.@lines=<STDIN> #在列表上下文中讀取標(biāo)準(zhǔn)輸入
18.chomp 去掉所有的換行符 chmop(@lines)
19.調(diào)用自定義方法 &methodName;
20.sub max{
if(@_!=2){ #判斷參數(shù)個(gè)數(shù)
print "waning!!!";
return -1;
}
my($m,$n); #創(chuàng)建新的所有變量
($m,$n)=@_; #將參數(shù)賦值給變量
if($m > $n){$m}else{$n}
}
21.my($num)=@_ #獲取數(shù)組的第一個(gè)元素
my $num=@_ #數(shù)組的數(shù)量
22.use strice ; #強(qiáng)制使用一些嚴(yán)格的良好的程序語(yǔ)言規(guī)則
23.sub division{
23.sub division{
$_[0] / $_[1]; #第一個(gè)參數(shù)和第二個(gè)參數(shù)
}
24.@ARGV=qw# file1 file2 #;# 強(qiáng)制讓磚石操作符讀取這兩個(gè)文件
while(<>){
chomp;
print "It was $_\n":
}
25.printf "Hello, %s; your password in %d days!\n",$user,$days;#格式化輸出
%d 整數(shù) %g 浮點(diǎn)數(shù)
27.die處理錯(cuò)誤輸出
28.讀取文件
open CONFIG,"c:/test.txt";
while(<CONFIG>){
print $_."\n";
}
29. say == print xxxx ."\n" # say 相當(dāng) 等于print 加換行符
30.hash
$family_name{"fred"}="flint";
$family_name{"bar"} ="rubble";
%family_name("fred","flint","bar","rubble");
my %family_name=(
"fred" => "flint",
"bar" => "rubblle";
)
my @k=keys %family_name;
my @v=values %family_name; #return array
31.
each函數(shù)
while( ($key,$value)=each %family_name ){
print "$key => $value\n";
}
exists函數(shù)
if(exists $family_name("dino")){
}
delete函數(shù)
delete $family{"fred"};32.\1,\2使用反向引用
$_=""abba;
if(/(.)\1/){#匹配到 bb
print "it matched";
}
33. \d = [0-9]
\w = [A-Za-z0-9_]
[^\d] 非數(shù)字
[^\w]非詞
[^\s]非空白字符
34./yes/i # /i 不區(qū)分大小寫
35./s 匹配任意字符 , 不包括換行
36./x運(yùn)行加入空白,便于閱讀理解
37.m//模式匹配搜索功能
S/// 模式匹配替換功能
/g 全局替換
38.@fields = split /separator/ , $string;
39.my $result = join $glue,@pieces;
my $x = join ":",4,5,6; # $x = "4:5:6";
40.*貪婪 *?非貪婪版本
41.從命令行進(jìn)行在線編輯
perl -p -w -e "s/ran/ra/g" fred.dat
-p 打印 -n 去掉自動(dòng)打印 -w 打開(kāi)警告選項(xiàng) -e 表示后面更得是代碼,而不是普通的參數(shù)
42.last 類似break
43.my $stuff="Howdy world!";
my $where=index($stuff,"wor"); # $where = 6
44.my $mineral=substr("Fred J. Flintstone",8,5); # 值為Flint
45.智能匹配對(duì)應(yīng)不同德操作數(shù),不同德處理方式
%a ~~ %b 哈希的鍵是否一致
%a ~~@b 至少%a中的一個(gè)鍵在列表@b之中
%a ~~ /Fred/ 至少一個(gè)鍵匹配給定的模式
%a ~~ 'Fred' 哈希中某一指定鍵$a{'Fred'} 是否存在
@a ~~ /Fred/ 有一個(gè)元素匹配給定的模式
@a ~~ 123 至少有一個(gè)元素轉(zhuǎn)化為數(shù)字后事123
$name ~~ undef $name確實(shí)尚未定義
46.system 啟動(dòng)子進(jìn)程
system "date";
14.my $tarfile="some*.tar";
my @dirs=qw(fred|flinet<bar&rubble> betty);
system "tar"."cvf",$tarfile,@dirs; 帶參數(shù)的系統(tǒng)命令調(diào)用
47.system的所有語(yǔ)法對(duì)exec都適用
執(zhí)行exec類似goto語(yǔ)句,跳轉(zhuǎn)到另個(gè)進(jìn)程進(jìn)行執(zhí)行,當(dāng)前perl進(jìn)程會(huì)關(guān)閉
chdir "/tmp" or die "cannot chdir /tmp: #!";
ecec "bedrock","-o","args1",@ARGV;
48.$ENV{'PATH'}="/home/rootbeer/bin:$ENV{'PATH'}";
delete $ENV{'IFS'};
my $make_result= system "make";
改修改并不能影響shell或者其他父進(jìn)程
49.my $now =`date`;
print "The time is now $now";
魔力反引號(hào)調(diào)用進(jìn)程
50.perl -p -i.old -e "s/try//g" test.txt 替換文件中的內(nèi)容,重新寫入文件, 原文件備份為old后綴的文件.
windows下要用雙引號(hào)
51.
%a ~~ %b 哈希的鍵是否一致
%a ~~@b 至少%a中的一個(gè)鍵在列表@b之中
%a ~~ /Fred/ 至少一個(gè)鍵匹配給定的模式
%a ~~ 'Fred' 哈希中某一指定鍵$a{'Fred'} 是否存在
@a ~~ /Fred/ 有一個(gè)元素匹配給定的模式
@a ~~ 123 至少有一個(gè)元素轉(zhuǎn)化為數(shù)字后事123
$name ~~ undef $name確實(shí)尚未定義
46.system 啟動(dòng)子進(jìn)程
system "date";
14.my $tarfile="some*.tar";
my @dirs=qw(fred|flinet<bar&rubble> betty);
system "tar"."cvf",$tarfile,@dirs; 帶參數(shù)的系統(tǒng)命令調(diào)用
47.system的所有語(yǔ)法對(duì)exec都適用
執(zhí)行exec類似goto語(yǔ)句,跳轉(zhuǎn)到另個(gè)進(jìn)程進(jìn)行執(zhí)行,當(dāng)前perl進(jìn)程會(huì)關(guān)閉
chdir "/tmp" or die "cannot chdir /tmp: #!";
ecec "bedrock","-o","args1",@ARGV;
48.$ENV{'PATH'}="/home/rootbeer/bin:$ENV{'PATH'}";
delete $ENV{'IFS'};
my $make_result= system "make";
改修改并不能影響shell或者其他父進(jìn)程
49.my $now =`date`;
print "The time is now $now";
魔力反引號(hào)調(diào)用進(jìn)程
50.perl -p -i.old -e "s/try//g" test.txt 替換文件中的內(nèi)容,重新寫入文件, 原文件備份為old后綴的文件.
windows下要用雙引號(hào)
51.
posted on 2010-05-06 14:29 余堅(jiān) 閱讀(255) 評(píng)論(0) 編輯 收藏 所屬分類: 腳本語(yǔ)言