Perl新接触的小命令
0,glob()函數
my @infile = glob("$indir/*.txt.gz"); ?#獲得指定路徑下的文件名,并形成列表,如果$indir為空,則自動匹配當前目錄下的指定文件名
1,sprintf()函數
my $rate_CG = sprintf("%.2f",$methy_CG*100/($methy_CG+$unmethy_CG)); ? ? ? ??#http://www.360doc.com/content/14/1229/14/12090552_436620848.shtml
2,判斷文件或目錄的各種屬性(轉載:http://blog.sina.com.cn/s/blog_5e425dd601019317.html)
示例:
if(-e "File-Name")
{
??print "TRUE\n";
}
else
{
??print "FALSE\n";
}
?檢測選項?????????????????含義
-r??????????????文件或目錄對此(有效的)用戶(effective user)或組是可讀的
-w?????????????文件或目錄對此(有效的)用戶或組是可寫的
-x?????????????文件或目錄對此(有效的)用戶或組是可執行的
-o?????????????文件或目錄由本(有效的)用戶所有
-R?????????????文件或目錄對此用戶(real user)或組是可讀的
-W????????????文件或目錄對此用戶或組是可寫的
-X?????????????文件或目錄對此用戶或組是可執行的
-O?????????????文件或目錄由本用戶所有
-e??????????????文件或目錄名存在
-z??????????????文件存在,大小為0(目錄恒為false)
-s??????????????文件或目錄存在,大小大于0(值為文件的大小,單位:字節)
-f???????????????為普通文本
-d??????????????為目錄
-l???????????????為符號鏈接
-S??????????????為socket
-p??????????????為管道(Entry is a named pipe(a“fifo”))
-b??????????????為block-special 文件(如掛載磁盤)
-c??????????????為character-special 文件(如I/O 設備)
-u??????????????setuid 的文件或目錄
-g??????????????setgid 的文件或目錄
-k??????????????File or directory has the sticky bit set
-t??????????????文件句柄為TTY(系統函數isatty()的返回結果;不能對文件名使用這個測試)
-T?????????????文件有些像“文本”文件
-B?????????????文件有些像“二進制”文件
-M?????????????修改的時間(單位:天)
-A?????????????訪問的時間(單位:天)
-C?????????????索引節點修改時間(單位:天)
3,操作Perl數組: shift, unshift, push, pop(轉載:https://cn.perlmaven.com/manipulating-perl-arrays)
和可以直接訪問單獨的數組元素一樣,Perl也提供了很多其它有趣的方式來操作數組。特別是,有些函數可以很方便有效的將Perl的數組作為棧或者隊列來使用。
pop
pop函數會刪除并返回數組的最后一個元素。
在第一個例子(3元素數組)中可以看到,pop函數刪除最后一個元素(下標最大)并返回它。
?
my @names = ('Foo', 'Bar', 'Baz'); my $last_one = pop @names;print "$last_one\n"; # Baz print "@names\n"; # Foo Bar?如果原數組為空,pop函數會返回undef。
push
push?函數可以在數組的后面添加一個或多個值。(當然,也可以添加0個值,但是沒有用,不是么?)
?
my @names = ('Foo', 'Bar'); push @names, 'Moo'; print "@names\n"; # Foo Bar Moomy @others = ('Darth', 'Vader'); push @names, @others; print "@names\n"; # Foo Bar Moo Darth Vader在這個例子中我們最初有個兩元素數組。之后我們向數組尾部push了一個標量,數組擴展成了3元素數組。
第二次調用push,我們push了@others數組的內容到@names尾部,把它擴充成5元素數組。
shift
shift函數會讓整個數組左移。設想一下,數組從左邊開始。數組的第一個元素會從數組“掉下來”,并成為函數的返回值(如果數組為空,shift?會返回?undef。)
這樣操作之后,數組會減少一個元素。
?
my @names = ('Foo', 'Bar', 'Moo'); my $first = shift @names; print "$first\n"; # Foo print "@names\n"; # Bar Moo這和pop很像,但是它作用于數組索引的小端。
unshift
這是shift的反函數。unshift?會傳入一個或多個值(或者0個) 并把它放在數組的開頭,將其他元素右移動。
你可以向它傳單個的標量,那么這個值會成為數組的第一個元素。或者像第二個例子那樣,你可以傳遞第二個數組,那么第二個數組的所有元素(我們例中的@others)會復制到主數組的開頭(例中@names),并將其他元素向高索引方向移動。
?
my @names = ('Foo', 'Bar'); unshift @names, 'Moo'; print "@names\n"; # Moo Foo Barmy @others = ('Darth', 'Vader'); unshift @names, @others; print "@names\n"; # Darth Vader Moo Foo Bar轉載于:https://www.cnblogs.com/Formulate0303/p/7239558.html
總結
以上是生活随笔為你收集整理的Perl新接触的小命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: manjaro使用国内软件源
- 下一篇: linux命令(2)vmstat