1K+ 閱讀量
Perl 中的匹配運算子 m// 用於將字串或語句與正則表示式進行匹配。例如,要將字元序列“foo”與標量 $bar 進行匹配,可以使用以下語句:示例 線上演示#!/usr/bin/perl $bar = "This is foo and again foo"; if ($bar =~ /foo/) { print "第一次匹配"; } else { print "第一次不匹配"; } $bar = "foo"; if ($bar =~ /foo/) { print "第二次匹配"; } else { print "第二次不匹配"; }當執行上述程式時,... 閱讀更多
197 閱讀量
Perl 中有各種與檔案控制代碼相關的特殊變數。我們已在下面的表格中列出了它們:$|如果設定為非零值,則在當前選擇的輸出通道上的每次寫入或列印後強制執行 fflush(3)。$OUTPUT_AUTOFLUSH$%當前選擇的輸出通道的當前頁碼。$FORMAT_PAGE_NUMBER$=當前選擇的輸出通道的當前頁面長度(可列印行)。預設值為 60。$FORMAT_LINES_PER_PAGE$-當前選擇的輸出通道頁面上剩餘的行數$FORMAT_LINES_LEFT$~當前選擇的輸出通道的當前報表格式的名稱。預設值為檔案控制代碼的名稱。$FORMAT_NAME$^當前選擇的輸出通道的當前頁面頂部的格式名稱。... 閱讀更多
633 閱讀量
Perl 中有各種正則表示式特殊變數。我們已在下面的表格中列出了它們:$digit包含上次匹配模式中相應括號集匹配的文字。例如,$1 匹配上一個正則表示式中第一組括號中包含的內容。$&上次成功模式匹配匹配的字串。$MATCH$`上次成功模式匹配之前匹配的字串。$PREMATCH$'上次成功模式匹配之後匹配的字串。$POSTMATCH$+上次搜尋模式匹配的最後一個括號。如果您不知道括號集中的哪一個匹配,這將很有用。... 閱讀更多
320 閱讀量
Perl 中有各種全域性特殊變數。我們已根據其用途和性質將它們列在不同的塊中:全域性陣列特殊變數@ARGV包含用於指令碼的命令列引數的陣列。@INC包含要由 do、require 或 use 構造查詢的 Perl 指令碼列表的陣列。@F當給出 -a 命令列開關時,輸入行分割到的陣列。全域性雜湊特殊變數%INC包含每個已透過 do 或 require 包含的檔案的檔名的條目。%ENV包含您當前環境的雜湊。%SIG用於設定訊號的雜湊... 閱讀更多
Perl 中的 confess 函式類似於 cluck;它呼叫 die,然後列印一直到源指令碼的堆疊跟蹤。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "模組中出錯!"; } 1;當從如下指令碼呼叫時:−use T; function();它將產生以下結果:−模組中出錯!在 T.pm 第 9 行 T::function() 在 test.pl 第 4 行呼叫
3K+ 閱讀量
Perl 中的 croak 函式等效於 die,除了它向上報告一個級別的呼叫者。與 die 一樣,此函式還在向 STDERR 報告錯誤後退出指令碼:−package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "模組中出錯!"; } 1;當從如下指令碼呼叫時:−use T; function();它將產生以下結果:−模組中出錯!在 test.pl 第 4 行與 carp 一樣,根據 warn 和 die 函式,相同的基本規則適用於包含行和檔案資訊。
814 閱讀量
Perl 中的 cluck 函式是一種增強的 carp,它遵循相同的基本原理,但還會列印導致呼叫該函式的所有模組的堆疊跟蹤,包括原始指令碼的資訊。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "模組中出錯!"; } 1;當從如下指令碼呼叫時:−use T; function();它將產生以下結果:−模組中出錯!在 T.pm 第 9 行 T::function() 在 test.pl 第 4 行呼叫
911 閱讀量
Perl 中的 carp 函式與 warn 基本等效,並將訊息列印到 STDERR,而不會實際退出指令碼並列印指令碼名稱。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "模組中出錯!"; } 1;當從如下指令碼呼叫時:−use T; function();它將產生以下結果:−模組中出錯!在 test.pl 第 4 行
149 閱讀量
在使用 Perl 程式設計時,我們應該能夠處理兩種不同的情況:−報告模組中的錯誤,該錯誤引用模組的檔名和行號 - 這在除錯模組時很有用,或者當您專門想要引發與模組相關的而不是與指令碼相關的錯誤時。−報告模組中引發的錯誤,該錯誤引用呼叫者的資訊,以便您可以除錯導致錯誤的指令碼中的行。以這種方式引發的錯誤對終端使用者很有用,因為它們突出顯示了與呼叫指令碼的原始碼行相關的錯誤。warn 和 die ... 閱讀更多
902 閱讀量
Perl 中的 unless 函式與 if 邏輯相反:語句可以完全繞過成功狀態,並且僅在表示式返回 false 時才執行。例如:−unless(chdir("/etc")) { die "錯誤:無法更改目錄 - $!"; }unless 語句最適合在您只想在表示式失敗時引發錯誤或備選方案時使用。該語句在單行語句中使用時也有意義:−die "錯誤:無法更改目錄!: $!" unless(chdir("/etc"));在這裡,我們僅在 chdir 操作失敗時才退出。die 函式die 函式的工作原理與 warn 相同,除了它還會呼叫 exit。在... 閱讀更多