在Unix shell腳本中,我們使用值
$?
檢查前一個命令的退出狀態,其中零等於成功。我如何在Perl中做到這一點?Perl基本問題當我運行
perl -V
我看到@INC
中列出的一些路徑。如何添加到@INC
的新路徑?如何在
GetOptions
函數中設置參數的順序?我想-email
是第一個參數,如果它作爲第二個參數給出,它應該失敗。GetOptions( 'nemail' => sub {$ENV{EMAIL} = "Y"}, 'arg' => \$help );
有什麼擴展
.pl
和.pm
之間的區別?我什麼時候需要使用.pm
的擴展名?當我寫
use File::Copy
時,代碼位於哪裏?use
訪問哪個環境變量?
Perl基本問題
回答
外部命令與
system
function推出,還設置了child error variable$?
/$CHILD_ERROR
。相反,你自己做這些檢查,使用autodie
:require IPC::System::Simple; use autodie qw(:all); system([0], 'foobar-command', '--option', '--yet-another-option'); # 0 is allowed as an exit status, others will throw an exception
內部編程結構,例如來自模塊的子程序,使用錯誤檢查超出了你從shell編程中知道的內容。有多種方法可以做到這一點。大多數類型的成功和失敗都是通過函數的返回值來表示的,通常是
undef
意味着失敗,例如,通過閱讀documentation forFile::Copy
我們知道失敗的返回值爲0,並且通常的其他錯誤變量也被設置。use English qw($OS_ERROR) use File::Copy qw(mv); my $source = '/does_not_exist'; my $destination = '/tmp'; unless (mv($source, $destination)) { warn "Move from $source to $destination failed: $OS_ERROR"; }
另一種可能性是例外。您必須詳細瞭解:PBP的第13章和EPP的第11章。
use Try::Tiny; my $string; try { $string = Encode::decode('UTF-8', $octets_buffer, Encode::FB_CROAK) } catch { warn "Decoding failed: $_"; }
它被設計成參數可以是隨機順序。你爲什麼要那樣?有一個名爲
require_order
的配置設置,但它不完全是你想要的。.pl
表示一個Perl庫,最像一個子程序集合,準備通過require
包含在內。這是來自十多年前。 Windows上的人們也喜歡將這個擴展名擴展到普通的Perl程序,因爲操作系統是以擴展爲中心的,並且不適用於沒有擴展名的文件。.pm
表示Perl module。模塊只是遵循一些附加約定的庫。這是來自Perl 5時代。File::Copy
被翻譯成文件名File/Copy.pm
這是在路徑之一在@INC
,詳情再次看到require
。在我的系統中,它將在/usr/lib/perl5
,例如/usr/lib/perl5/5.10.0/File/Copy.pm
。
非常感謝。不。我問的是在Perl中檢查任何命令的返回值。如果我執行FILE:MOVE命令或任何其他命令,我如何檢查退出狀態是否成功。在UNIX shell腳本中,我們可以檢查$ ?.在perl中是退出狀態0表示成功,就像在shell腳本中一樣。 看到維基百科的網站。使用Hello :: World;這裏是否需要世界詞彙? 「你好」字也應該與文件名同名。通常在java包中,我們有包名稱中的目錄名稱。 require_order需要在GET_OPTIONS COMMAND中設置? – Arav 2010-06-25 06:54:17
- 1. Perl:基本問題,函數功能
- 2. Perl腳本問題
- 3. Crontab問題與Perl腳本
- 4. PERL ssh腳本tty問題
- 5. Perl腳本修復問題
- 6. perl腳本中的「#」問題
- 7. EJB基本問題
- 8. SQLAlchemy基本問題
- 9. hoverIntent基本問題?
- 10. 基本HTACCESS問題
- 11. 基本Subversion問題
- 12. 基本URL問題
- 13. 基本gradle問題
- 14. 基本JSON問題
- 15. 基本DataGridView問題
- 16. jQuery基本問題
- 17. 基本Android問題
- 18. 基本Flex問題
- 19. 基本xmlHttp問題
- 20. 基本phpmailer問題
- 21. ExtJs:基本問題
- 22. javascript基本問題
- 23. MSIL問題(基本)
- 24. 基本mod_perl問題
- 25. Android基本問題
- 26. socket.io基本問題
- 27. 基本LUA問題
- 28. 基本Subversion問題
- 29. 基本JSON.parse問題
- 30. Calendar.getInstance()...基本問題
阿拉夫,幾乎所有這五個問題都是互不相關的。在未來,對每個主題[請提出一個單獨的問題](http://stackoverflow.com/questions/ask)會更好。 – daxim 2010-06-25 08:44:58