2014-10-27 175 views
-1

我需要選擇性地接受執行我的腳本的用戶的命令行參數。 (我不喜歡使用GetOptions())。可選地傳遞命令行參數?

我有兩個變量,

my ($port_name, $report); 
$port_name = $ARGV[0]; 
$report = $ARGV[1]; 

if (defined $port_name){  
    .... 
} 
if (defined $report){ 
    .... 
} 

如果$report標誌不作爲命令行參數給出的話,我不想跑第二,如果塊。如果沒有perl給我一個錯誤,這怎麼能做到呢?

感謝您的幫助。

+1

嗯,你可以不喜歡它,但你還是應該使用[':: Getopt的Long'(HTTP://perldoc.perl .ORG /的Getopt/Long.html)。 – Miller 2014-10-27 18:13:33

+1

__什麼錯誤? – 2014-10-27 18:42:08

回答

-1

您的代碼應該按預期工作.....

hi[[email protected] cpanel]# perl blah.pl 1 
hi[[email protected] cpanel]# perl blah.pl 1 2 
hino[[email protected] cpanel]# 

[[email protected] cpanel]# cat blah.pl 
#!/usr/bin/perl 
use strict; 
use warnings; 
my ($port, $report) = @ARGV; 

if ($port) { 
    print 'hi'; 
} 
if ($report) { 
    print 'no'; 
} 
+1

'perl blah.pl 0' – toolic 2014-10-27 18:24:02

+0

他沒有詢問驗證:P – morissette 2014-10-27 18:24:58

+2

這不是驗證,而是測試真實性與存在性。 'defined'對此很有幫助。 – Sobrique 2014-10-27 19:58:45