導航:首頁 > 程序命令 > perl單行命令

perl單行命令

發布時間:2022-08-30 06:41:23

⑴ perl控制腳本某一行命令不執行

把你的腳本貼出來,另外if不消耗內存。

⑵ perl單行命令可以按照斜杠分割嗎

用 s///這個的時候,你轉義了沒有。 s/\\/\// 前面再加個轉義字元\。試試。

⑶ 如何用perl運行單行命令

可以使用單撇號,例如:

$str=`ls-f`;

這個語句執行命令ls -f並把結果存放到字元串變數$str裡面。

⑷ 如何系統的學習Perl語言

Perl是典型的腳本語言,短小精悍,非常容易上手,尤其適合處理文本,數據,以及系統管理。它在老一輩的生物信息學分析人員中非常流行,出於歷史遺留原因大家肯定會或多或少地接觸 Perl,即使你再怎麼推崇Python或者GO等新興編程語言。
1 入門資料
兩個半小時入門指導:https://qntm.org/files/perl/perl.html
21天學完 perl,自己搜索下載pdf書籍吧!
大小駱駝書,建議都看完,以囫圇吞棗的方式閱讀,只看基礎知識來入門,難點全部跳過。
官網:https://www.perl.org/
函數如何用:都可以在http://perldoc.perl.org/perl.html 查到
論壇:http://www.perlmonks.org/
2 知識要點
在看書的同時,你必須記住和熟練使用的知識點是下面這些:
理解perl裡面的三種變數表示方式
$ 表示單個變數
用單雙引號區別,q(),qq()
@ 表示多個變數組成的數組,qw()
% 表示關系型變數-hash
變數不嚴格區分類型,沒有int/float/double/char這樣的概念
三種變數都有對應的操作技巧:
簡單變數的操作函數
Numerical operators: <> >, <> >=, ==, !=, <=>, +, *
String operators: lt, gt, le, ge, eq, ne, cmp, ., x
數組操作(pop/push/shift/unshift/splice/map/grep/join/split/sort/reverse)
hash操作方式
(keys,values,each,delete,exists)
具體需要在實戰裡面體會:http://www.biotrainee.com/forum-90-1.html 生信人必練的200個數據處理任務(歡迎大家去練習)
變數內容交換,字元型轉為數值型,字元串轉為字元數組,字元串變數,heredoc,字元串分割,字元串截取,隨機數生成,取整,各種概率分布數,多維矩陣如何操作,進制轉換,hash翻轉,數組轉hash
上下文環境
這個比較復雜: http://www.perlmonks.org/?node_id=738558,就是需要理解你寫的程序是如何判斷你的變數的,你以為的不一定是你以為的。
正則表達式
這也是一個非常重要的一塊內容,基礎用法就是m和s,一個匹配,一個替換,比較有趣的就是1,2等等捕獲變數。
內建變數
就是perl語言設計的時候定義了一大堆的全局變數($_ $, $0 $> $< $!="" $.="" @argv="" @f="" @_="" @inc="" %env="">)
。外表上看起來都是一個$ @ %符號後面加上一大堆的奇奇怪怪的字元,表示一些特殊變數,這也是perl語言飽受詬病的原因。但是有些非常重要,懂了它之後寫程序會方便。下載一個表格,裡面有近100個預定義變數需要學習的。
控制語句(循環/條件/判斷)
if ... elsif ... else ...
unless/while/next/last/for/foreach
讀寫文件,腳本實戰!
while(<>){
#do something !
}
這是我最喜歡的一個程序模板,讀取文件,根據需要處理文件,然後輸出。需要實現非常多的功能,然後就可以自己總結腳本技巧,也能完全掌握perl的各種語法。在生物信息學領域,需要實現的功能有!
perl 單行命令
我個人特別喜歡這個知識點,我也專門下載過一本書來學習,把這個教程看完就基本上能全明白:http://www.catonmat.net/blog/perl-one-liners-explained-part-one/。學習單行命令的前提是掌握非常多的奇奇怪怪的perl自定義變數和perl的基礎語法,用熟練了之後就非常方便,很多生物信息學數據處理過程我現在基本不寫腳本,都是直接寫一行命令,完全代替了shell腳本裡面的awk、sed/grep系列命令。(perl -p -a -n -a -l -i -F -M)
預定義函數
perl 是一個非常精簡的語言,自定義的函數非常少,連min max這樣常見的函數都沒有,如果你需要使用這樣的功能,要麼自己寫一個函數,要麼使用加強版的包,perl的包非常多。
下面列出一些,我常用的函數:
程序必備: use/die/warn/print/open/close/<>/
數學函數:sin/cos/log/abs/rand/srand/sqrt
字元串函數 :uc/lc/scaler/index/rindex/length/pos/substr/sprintf/chop/chomp/hex/int/oct/ord/chr/unpack/unencode
defined/undef
系統操作相關
perl語言是跨平台的,因為它的執行靠的是perl解釋器,而perl的解釋器可以安裝在任何機器上面。所以可以用perl來代替很多系統管理工作。
系統命令調用
文件句柄操作(STDIN,STDOUT,STDERR,ARGV,DATA,)
系統文件管理(mkdir/chdir/opendir/closedir/readdir/telldir/rmdir/)
一些高級技巧
自定義函數 sub , 參數傳遞,數組傳遞,返回值
模塊操作(模塊安裝,載入,模塊路徑,模塊函數引用)
引用(變數的變數)
選擇一個好的編輯器-編譯器,editplus,notepad++,jEdit,編程習慣的養成。
搞清楚perl版本的問題,還有程序編碼的問題,中文顯示的問題。
程序調試
perl常見模塊學習
perl和LWP/HTML做網路爬蟲必備,重點是DOM如何解析;
perl和CGI編程,做網站的神器,重點是html基礎知識;
DBI相關資料庫,用perl來操作mysql等,當然,重點是mysql知識;
GD and GD::Graph 可以用來畫圖,但是基本上沒有人用了,除了CIRCOS畫圈圈圖火起來了;
TK模塊,可以編寫GUI界面程序,但是也幾乎沒有人用了;
XML/pdf/excel/Json 相關的模塊可以用來讀取非文本格式數據,或者輸出格式化報告;
socket通信相關,高手甚至可以寫出一個QQ的模仿版本;
最後不得不提的就是Bioperl了,雖然我從來沒有用過,但是它的確對初學者非常有用,大多數人不提倡重復造輪子,但我個人覺得,對初學者來說,重復造輪子是一個非常好的學習方式。大家可以仿造bioperl裡面的各個功能,用自己的腳本來實現!
3 復習資料
如果你感覺學的差不多了,就可以下載一些復習資料,查漏補缺:
http://michaelgoerz.net/refcards/perl_refcard.pdf
https://rc.hms.harvard.e/training/perl/Perl%20Cheat%20Sheet.pdf
https://www.cheatography.com/mishin/cheat-sheets/perl-reference-card/
http://www.catonmat.net/download/perl.predefined.variables.pdf
http://www.erudil.com/preqr.pdf
https://www.cs.tut.fi/~jkorpela/perl/regexp.html
https://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf

⑸ 用perl打開dos,寫入一行命令

#!perl

use warnings;
use win32;

$argument = 'dir -l';

system (cmd.exe $argument)
or die "Wrong: $!";

⑹ Perl入門教程

2樓真是的,人家還沒入門,你直接整個文件操作幹嘛?
什麼是Perl?

Perl 是一種最初開發用於文本操作的編程語言。現在它能應用於廣泛的任務,包括系統管理、 web 開發、 網路編程、 GUI 開發和更多的普通用途。

這個語言以實用性為目標(易用、高效、完整)寧願失去美麗(小巧、優雅、迷你)。它使用方便,且支持面向過程和面向對象編程,內置強大的文本處理支持,並有世界上最令人印象深刻的第三方模塊的集中營。
運行Perl程序

在Unix命令行運行Perl程序:

perl progname.pl

另一種方法是,把這個放到你的腳本第一行:

#!/usr/bin/env perl

然後用/path/to/script.pl運行。當然,首先得讓它能執行,你得chmod 755 script.pl(Unix下)。

(這里的第一行假設你有env程序。你也可以直接把你的perl解釋器的路徑直接放到第一行,比如#!/usr/bin/perl)
安全保障

默認情況下,Perl非常隨意。為了使它更強健建議每個程序由下列行開始:

1. #!/usr/bin/perl
2. use strict;
3. use warnings;

附加的兩行從perl中捕獲您的代碼中的各種常見的問題。它們檢查不同的事情,所以你需要兩個都加上。一個潛在的問題通過use strict;捕獲,一旦它捕獲到問題,會馬上讓你的程序停止運行。當然使用use warnings;時,僅僅出現警告(就好像命令行的-w選項)並不會停止程序。
基本語法概述

一個Perl腳本或程序包含一條或多條語句。這些語句只需直接寫在腳本中,而不需要像main()這樣的東西作為程序入口。

Perl語句以分別結束:

print "Hello, world";

以星號(#)開始的語句是注釋:

# This is a comment(這是一條注釋)

空白字元會被Perl忽略:

1. print
2. "Hello, world"
3. ;

……引號里的字元串除外:

1. # this would print with a linebreak in the middle
2. print "Hello
3. world";

字元串使用雙引號或單引號:

1. print "Hello, world";
2. print 'Hello, world';

然而,只有雙引號會「插入」變數值和像換行符(\n)這樣的特殊字元(轉義字元):

1. print "Hello, $name\n"; # works fine
2. print 'Hello, $name\n'; # prints $name\n literally

數字不需要引號:

print 42;

你可以使用或省略括弧來傳遞函數的參數。它們只是在偶爾要改變或明確優先順序的時候必須使用。

1. print("Hello, world\n");
2. print "Hello, world\n";

Perl變數類型

Perl有3種主要的變數類型:標量(scalars)、數組(arrays)和哈希(hashes)。

* 標量(Scalars)

一個標量表示只有一個值:

1. my $animal = "camel";
2. my $answer = 42;

標量的值可以是字元串、整數或浮點數,並且Perl會在需要的時候自動轉換。你不需要預先聲明你的變數類型,但是你需要在第一次使用它們的時候,使用my來聲明它們。(這是use strict;所要求的)

標量可以用不用的方式使用:

1. print $animal;
2. print "The animal is $animal\n";
3. print "The square of $answer is ", $answer * $answer, "\n";

有大量的「魔法」標量的名稱看上去像標點或線路噪音。這些特殊的變數用於各種目的。現在你只要知道其中一個,這就是「默認變數」$_。它被許多Perl的函數用作默認的參數,並且它被隱式設置到某些循環結構中。

print; # prints contents of $_ by default(默認列印$_的內容)

* 數組(Arrays)

數組用於表示一些值的列表:

1. my @animals = ("camel", "llama", "owl");
2. my @numbers = (23, 42, 69);
3. my @mixed = ("camel", 42, 1.23);

特殊變數$#array將返回數組最後一個元素的索引:

print $mixed[$#mixed]; # last element, prints 1.23

你可能想使用$#array + 1來得到這個數組的元素個數。別急,這很容易。在Perl預想找到一個標量值的時候(「在標量上下文」),使用@array會得到數組的元素個數:(譯註:「上下文」是Perl很重要的特性之一,請查閱相關文檔或在無憂Perl搜索相關內容)

if (@animals < 5) { ... } #譯註:當@animals數組的元素個數少於5個的時候

當我們從數組獲得元素值的時候,需要使用$,因為我們只要獲取數組里的一個值;你請求一個標量,然後會獲得一個標量。

從數組里獲取多個值:

(譯註:獲取多個值,使用@,因為我們要獲取數組里的幾個值(列表)。)

1. @animals[0,1]; # gives ("camel", "llama");
2. @animals[0..2]; # gives ("camel", "llama", "owl");
3. @animals[1..$#animals]; # gives all except the first element

這叫「數組切片」。

你可以在列表裡幹些有意義的事情:

1. my @sorted = sort @animals;
2. my @backwards = reverse @numbers;

有兩個特殊的數組,一個是命令行傳到你腳本的參數@ARGV;另一個是傳遞給子程序的參數@_。
* 哈希

哈希用來表示鍵/值對:

1. my %fruit_color = ("apple", "red", "banana", "yellow");

你可以使用空白字元和=>操作符來美化上面的代碼:

1. my %fruit_color = (
2. apple => "red",
3. banana => "yellow",
4. );

獲取哈希元素:

1. $fruit_color{"apple"}; # gives "red"

你可以通過keys()和values()來獲取鍵列表和值列表。

1. my @fruits = keys %fruit_colors;
2. my @colors = values %fruit_colors;

哈希沒有特定的內部排序,然而你可以對鍵進行排序來遍歷它。

和特殊的標量、數組一樣,哈希也有特殊的。我們現在只要知道哈希%ENV包括所有環境變數



更復雜的數據類型可以使用引用來構造,允許你把列表和哈希放到另一個列表和哈希中。

引用是一個標量值,它可以引用任何其它的Perl數據類型。通過把引用存儲為數組或哈希的元素值,你可以輕松創建列表/哈希中的列表/哈希。

以下示例演示了使用匿名哈希引用實現的兩級哈希結構

1. my $variables = {
2. scalar => {
3. description => "single item",
4. sigil => '$',
5. },
6. array => {
7. description => "ordered list of items",
8. sigil => '@',
9. },
10. hash => {
11. description => "key/value pairs",
12. sigil => '%',
13. },
14. };
15.
16. print "Scalars begin with a $variables->{'scalar'}->{'sigil'}\n";

變數作用域

上面所有的例子都使用這種語法:

1. my $var = "value";

實際上,my不是必須的。你可以省略:(譯註:前提是,你沒有使用「use strict;」語句)

1. $var = "value";

但是,上面的用法將創建一個全局變數,這是一個很差的編程實踐。my創建一個詞法作用域變數,這個變數只在定義它們的語句塊中可見(比如一段包在大括弧里的語句)。

1. my $x = "foo";
2. my $some_condition = 1;
3. if ($some_condition) {
4. my $y = "bar";
5. print $x; # prints "foo"
6. print $y; # prints "bar"
7. }
8. print $x; # prints "foo"
9. print $y; # prints nothing; $y has fallen out of scope

結合使用my和在Perl腳本開頭使用use strict,解釋器將捕獲常見的編程錯誤。比如,在上面的例子中,最後的print $y將引發一個編譯時錯誤並阻止程序運行。強烈建議使用use strict語句!
條件和循環語句

Perl有許多常用的條件和循環語句。Perl 5.10甚至提供了分支語句(拼作given/when)。

條件可以是任何Perl表達式。比較和布爾條件語句中常用的邏輯運算符,請參閱有關信息的下一節中的運算符的列表。

* if

1. if ( condition ) {
2. ...
3. } elsif ( other condition ) {
4. ...
5. } else {
6. ...
7. }

還有否定版本的:

1. unless ( condition ) {
2. ...
3. }

這個否定版比if (!condition)更易讀。

注意,大括弧是必須的,即使代碼塊中只有一行。不過,這里有一個方法可以讓你通過類似英語的語法來實現單行條件語句:

1. # the traditional way
2. if ($zippy) {
3. print "Yow!";
4. }
5.
6. # the Perlish post-condition way
7. print "Yow!" if $zippy;
8. print "We have no bananas" unless $bananas;

* while

1. while ( condition ) {
2. ...
3. }

為了和unless同樣的理由,也有一個否定版本:

1. until ( condition ) {
2. ...
3. }

你也可以在後置條件里使用while:

print "LA LA LA\n" while 1; # loops forever

* for

跟C語言一樣:

1. for ($i = 0; $i <= $max; $i++) {
2. ...
3. }

自然Perl提供了更友好的列表遍歷循環foreach以後,C語言風格的for循環在Perl幾乎不需要了。
* foreach

1. foreach (@array) {
2. print "This element is $_\n";
3. }
4.
5. print $list[$_] foreach 0 .. $max;
6.
7. # you don't have to use the default $_ either...
8. foreach my $key (keys %hash) {
9. print "The value of $key is $hash{$key}\n";
10. }

內置操作符和函數

Perl 附帶了各種各樣的內置函數。我們已經看到的幾個,包括print,sort和reverse。

Perl常見操作符(運算符)

* 算術

1. + 加法
2. - 減法
3. * 乘法
4. / 除法

* 數字比較

1. == 等於
2. != 不等於
3. < 小於
4. > 大於
5. <= 小於等於
6. >= 大於等於

* 字元串比較

1. eq 等於
2. ne 不等於
3. lt 小於
4. gt 大於
5. le 小於等於
6. ge 大於等於

(為什麼數字和字元串的比較運算符不同?因為我們沒有不同的變數類型,並且Perl需要知道是以數字進行排序(99小於100)還是以字母進行排序(100在99前面))
* 邏輯

1. && and 和
2. || or 或
3. ! not 否

* 混合

1. = 賦值
2. . 字元串連接
3. x 字元串乘法
4. .. 范圍 (建立一個列表)

一些操作符可以和=結合,像這樣:

1. $a += 1; # same as $a = $a + 1
2. $a -= 1; # same as $a = $a - 1
3. $a .= "\n"; # same as $a = $a . "\n";

文件和I/O

你可以使用open()函數來打開一個文件,用於輸入或輸出:

1. open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
2. open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
3. open(my $log, ">>", "my.log") or die "Can't open my.log: $!";

你可以使用<>操作符從打開的文件句柄中讀數據。在標量上下文中,它從文件句柄中讀取一行;在列表上下文中,它讀取整個文件,並將每一行作為列表的元素。

1. my $line = <$in>;
2. my @lines = <$in>;

一次性把整個文件讀完,叫做「啜食(slurping)」。它能讓人滿意,但它可能是內存吞噬者。大多數文本文件處理可以通過Perl的循環結構,一行一行地完成。

<>操作符經常出現在while循環里:

1. while (<$in>) { # assigns each line in turn to $_
2. print "Just read in this line: $_";
3. }

我們已經看到了如何使用print()在標准輸出里列印。但是,print()還能通過第一個可選參數指定一個文件句柄來列印(譯註:將內容輸出到指定的文件句柄中,即寫入到文件句柄相關聯的文件中)

1. print STDERR "This is your final warning.\n";
2. print $out $record;
3. print $log $logmessage;

當你完成了對文件句柄的操作之後,你應該使用close()來關閉文件句柄。(老實說,如果你忘記關閉了,Perl會幫你處理。)

close $in or die "$in: $!";

正則表達式

Perl對正則表達式的支持寬廣而深入:

* 簡單匹配

1. if (/foo/) { ... } # true if $_ contains "foo"
2. if ($a =~ /foo/) { ... } # true if $a contains "foo"

//匹配操作符(譯注,完整的應該是:m//)默認操作$_,或者使用=~來綁定其它變數進行操作。
* 簡單置換

1. s/foo/bar/; # replaces foo with bar in $_
2. $a =~ s/foo/bar/; # replaces foo with bar in $a
3. $a =~ s/foo/bar/g; # replaces ALL INSTANCES of foo with bar in $a

* 更復雜的正則表達式

你不僅能匹配固定的字元串。其實,你可以匹配任何你能想到的復雜正則表達式。

1. . 單個任意字元(默認不包含\n)
2. \s 一個空白字元 (空格, tab, 換行, ...)
3. \S 一個非空白字元
4. \d 一個數字 (0-9)
5. \D 一個非數字
6. \w 一個能組成單詞的字元 (a-z, A-Z, 0-9, _)
7. \W 一個不能組成單詞的字元
8. [aeiou] 匹配中括弧內的任意一個字元
9. [^aeiou] 匹配除了中括弧內列出的字元之外的任意一個字元
10. (foo|bar|baz) 匹配foo或bar或baz
11.
12. ^ 匹配開頭
13. $ 匹配結尾

量詞可用來指定數量:

1. * 零個或任意多個
2. + 至少一個
3. ? 零個或一個
4. {3} 3個
5. {3,6} 3到6個
6. {3,} 至少3個

一些簡單的例子:

1. /^\d+/ 以一個或多個數字開頭
2. /^$/ 空的,沒有任何東西
3. /(\d\s){3}/ 3個帶空白字元的數字
4. (比如 "3 4 5 ")
5. /(a.)+/ 匹配最少一次,含有a和任意字元
6. (比如 "abacadaf")
7.
8. # 從STDIN循環讀入,並列印出非空白行:
9. while (<>) {
10. next if /^$/;
11. print;
12. }

* 圓括弧捕捉

括弧的另一個用法是分組。它可以用來捕捉最後使用的正則表達式匹配的結果。這些結果用$1、$2……表示。

1. # a cheap and nasty way to break an email address up into parts
2.
3. if ($email =~ /([^@]+)@(.+)/) {
4. print "Username is $1\n";
5. print "Hostname is $2\n";
6. }

子程序

寫一個子程序是很容易的:

1. sub logger {
2. my $logmessage = shift;
3. open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
4. print $logfile $logmessage;
5. }

現在我們可以像使用其它內置函數一樣,使用該子程序了:

1. logger("We have a logger subroutine!");

什麼是shift?傳遞給子程序的參數保存在@_數組中。shift函數的默認參數是@_。所以my $logmessage = shift;去掉第一個參數,並將其賦值給$logmessage。

可以通過別的方法操作@_:

1. my ($logmessage, $priority) = @_; # common(通用)
2. my $logmessage = $_[0]; # uncommon, and ugly(不通過,並且很醜陋)

子程序可以返回值:

# sub square {
# my $num = shift;
# my $result = $num * $num;
# return $result;
# }

然後像這樣使用它:

1. $sq = square(8);

Perl面向對象

Perl面向對象相對比較簡單,這是實現使用引用什麼樣的對象知道自己是在Perl的概念為基礎的封裝。

剛開始進行Perl編程,你最常使用的Perl面向對象將是使用第三方模塊,參見下文。
使用Perl模塊

Perl 模塊提供了一系列的功能,可幫助您避免重復勞動,它們可以通過CPAN(www.cpan.org)下載。許多流行的模塊都已經包含在了Perl發行包中。

本文由無憂Perl(www.51perl.com)翻譯,轉載請註明本文鏈接:www.51perl.com/perl-brief-introction/

水平有限,錯誤難免,歡迎指正,並以原文為准。原文地址:http://perldoc.perl.org/perlintro.html

希望對你有用

⑺ mac的終端怎麼運行perl語句

1、perl解釋器基本在所有的linux平台上都是自帶的,用戶可以通過如下命令判斷是否有perl解釋器:
which perl
2、如果自己的linux系統上沒有perl解釋器,可以去其官網下載安裝。
3、在具備perl解釋器的情況下,可以參考如下運行步驟:
1)、用vim編寫test.pl,代碼如下:
#!/usr/local/bin/perlprint "HellonWorld!\n";
2、編寫完成後,直接執行如下命令即可:
perl test.perl

3、有時候需要一些許可權,自己可以通過su、sudo等命令提示許可權。

⑻ linux下怎麼運行perl程序

1、perl解釋器基本在所有的linux平台上都是自帶的,用戶可以通過如下命令判斷是否有perl解釋器:

which perl

2、如果自己的linux系統上沒有perl解釋器,可以去其官網下載安裝。

3、在具備perl解釋器的情況下,可以參考如下運行步驟:

1)、用vim編寫test.pl,代碼如下:

#!/usr/local/bin/perl
print "HellonWorld! ";

2、編寫完成後,直接執行如下命令即可:

perl test.perl

3、有時候需要一些許可權,自己可以通過su、sudo等命令提示許可權。

⑼ 如何調試perl腳本

進入退出:
perl
-d debugtest用調試器載入perl程序運行,互動式界面

Loading
DB routines from perl5db.pl version 1.3

Editor
support available.

Enter
h or `h h' for help, or `perldoc
perldebug'
for more help.

main::(p4.pl:2): my($xx,$yy)=(1,1);

DB<1>

先是歡迎信息,顯示第一個可執行行:程序將要執行的當前行號。包名,文件名,文件中的行號。

提示符DB<n>
n為命令行號。h可看幫助,q退出調試器
l
預設顯示10行 再輸入l接著顯示10行

l
10 指定顯示第10行

l
8-10 指定顯示行的范圍

l
8+3 指定從哪行開始多少行。

l
subs 指定顯示函數,提供函數名。如果太長只顯示前幾行,用l接著顯示

-
顯示在當前行前面的行,再輸入-繼續向前

w
7 包含指定行的顯示窗口 windows可能不一樣

//
?? 從當前行搜索包含指定模式的行 /find/
//從前向後正向搜索,??從後向前逆向搜索 可忽略?? //中後面的? /。

S
列出所有函數,包名::函數
無參數的預設形式列出所有底層和繼承的函數,太多。加上搜索模式,指定當前程序包 S main可列出含main的函數
s 執行單條語句 顯示下一條要執行的語句。如果需要交互會等待輸入。

對於函數,僅僅是進入不執行,如果不進入函數內部,要跳過用n。不能進入系統內部的庫函數,只能進入自己定義的

n 執行一行程序,stepover 不進入函數。

f 執行當前函數剩下的語句,顯示跟隨函數的語句
step
out 舊命令,現在為切換文件名

回車
如果執行了s或n,以後只用回車重復執行上一個s或n的命令。

r 在函數中執行到函數外
b 10
在哪一行設置斷點。如果此行非執行語句,顯示不能設置斷點。如果一條語句有多行,則在第一行設置,其餘行不能設置。

b func在函數處設置斷點

b 10
($curdir eq
"") 當條件為真時中斷執行

c
執行到斷點或終止。繼續

c
12臨時斷點,只中斷一次,繼續執行在12行中斷。

L
列出所有斷點。列出前幾行,當前行,斷點。斷點條件。

B
10刪除斷點。不帶參數認為是下一行是斷點。

B *
刪除所有斷點。
X
var 不帶參數列出main包的所有變數,包括預定義的變數。指定變數不帶$,@。可能是符號表中的變數才行。現在與V同。

V
var 列出任何包的變數。只指定包名列出包的所有變數。指定包及變數為main
var。無::

S
列出所有可用的函數,包名::函數 無參數的預設形式列出所有底層和繼承的函數,太多。加上搜索模式,

指定當前程序包
S
main可列出含main的函數

p
expr
指印表達式值。把標准輸出重定向也會輸出到屏幕。
程序到達某一行時指定執行一條或多條語句。常見的行動作是顯示變數值或把含錯誤值的變數重置為指定的值

a
10 print ("curdir is $curdir\n") 多條語句在一行中用分號;分開,當要續行時用\ 執行完第10行執行指定的語句。

A
*刪除所有行動作
A 10刪除第10行的動作

>
print 在程序開始執行前執行語句。無參數形式刪除設置

<
print 在程序執行完成後執行語句。無參數形式刪除設置
跟蹤 顯示每一個執行行。

t
打開,關閉跟蹤。每執行顯示一行。

任何非調試命令的perl語句都可執行。分號可忽略。更改變數值。

H
列出從前命令

!
n 執行從前命令。忽略行號執行上一條命令
n=-2跳過2條命令。從當前H列表逆向跳過。

T
棧跟蹤。調用級

$
= &main::sub2('hi') from file debug1 line 7

$
= &main::sub1('hi') from file debug1 line 3

當前程序在第7行,在main包的sub2函數中,以hi為實際傳遞的參數。返回簡單變數,此函數由sub1調用。

=
別名 命令 給命令定義別名 =
pc print ("curdir is $curdir\n");別名存在%DB(%DB::alias)中。無參數列出定義的別名。輸入pc列印語句。

預定義別名:每次載入調試器自動定義別名。在.perldb中加入$DB'alias{"pc"} = 's/^pc/print
("curdir is $curdir\n");/';
錯誤檢查
Lint perl -MO=Lint,-u pl 編譯時檢查

perldiag錯誤信息

-w 重定義函數變數未使用

Use strict;

use diagnostics 警告信息。
命令行參數簡介
-c 語法檢查

-v版本

-w警告信息

-e執行單行程序

-s為程序提供命令行選項。perl -s prog.pl
-q =>$q=1作為選項。不出現在@ARGV中。否則不加-s,-q作為字元串存在@ARGV中。可賦值-abc="abc"
跟在程序名後帶-的是選項,不帶-的不是,不是選項的項後面的所有都不是選項。

-P先運行c預處理器,輸出再由perl執行

-I指定目錄中的包含文件

-n循環處理多個文件。不用while

-p讀文件行並顯示。同n,不用print自動顯示。

-i編輯文件,讀然後寫迴文件。
-a分割行到@F

-F分割模式,指定分割符

-0
指定輸入行結束符,用八進製表示

-1
指定輸出行結束符

-x從消息中抽取程序。忽略行,直到遇到#!..perl。到文件尾,ctrl-d
ctrl-z __END__時結束

-u產生coremp

-U可以執行不安全操作

-S從路徑中查找程序

-D設置調試標志

-T寫安全程序。從外部獲得的數據不能作為命令或修改文件系統

-d使用調試器

⑽ perl: 如下命令

用雙引號:
perl -p -i.bak -w -e "s/a/b/g" fred.pl
---------------------------
C:\Documents and Settings\t>perl -p -e "" fred.pl
abc

C:\Documents and Settings\t>perl -p -i.bak -w -e 's/a/b/g' fred.pl
Useless use of a constant in void context at -e line 1.

C:\Documents and Settings\t>del fred.pl.bak

C:\Documents and Settings\t>perl -p -i.bak -w -e "s/a/b/g" fred.pl

C:\Documents and Settings\t>perl -p -e "" fred.pl
bbc

閱讀全文

與perl單行命令相關的資料

熱點內容
區域網伺服器下如何連續看照片 瀏覽:244
經過加密的數字摘要 瀏覽:645
加密鎖9000變列印機 瀏覽:694
程序員的職業發展前途 瀏覽:637
安卓是世界上多少個程序員開發 瀏覽:45
解壓器官方免費 瀏覽:85
單片機p10開發 瀏覽:486
做什麼app賺錢 瀏覽:84
博途編譯失敗聯系客戶支持部門 瀏覽:928
金蝶旗艦版編譯 瀏覽:51
萬象伺服器斷電後啟動不了怎麼辦 瀏覽:356
我的世界蘋果版的2b2t伺服器地址咋查 瀏覽:95
xlsx轉換pdf 瀏覽:99
3dmax擠出命令英語 瀏覽:903
靶心率的定義和演算法 瀏覽:514
3d模術師app哪裡下載 瀏覽:476
php中文api文檔 瀏覽:458
安卓設計怎麼加入輸入框 瀏覽:186
主根伺服器什麼時候開始 瀏覽:738
奇門遁甲完整版pdf 瀏覽:904