2012-08-22 33 views
5
#!/usr/bin/perl -sw 
use strict; 
use warnings; 
use Getopt::Long; 

my $remote = 0; 
my $test = 0; 
GetOptions ('remote' => \$remote, 'test' => \$test); 
print "$remote:$test\n"; 

perl test.pl --remote --testKhông thể phân tích dòng lệnh tùy chọn dài

Các bản in trên "0: 0". Tôi là người mới đối với Perl nên tôi đã không thể xác định tại sao điều này không hiệu quả.

Tôi cũng chạy phần "Tùy chọn đơn giản" từ http://perldoc.perl.org/Getopt/Long.html#Simple-options và cũng không tạo ra bất kỳ thứ gì.

+0

@ raina77ow - Tôi đã có họ, chỉ cần không bao gồm trong bài viết này. –

Trả lời

11

Tôi tin rằng tùy chọn dòng lệnh -s mà bạn đưa vào đường thẳng ngang hàng đang cắn bạn. Theo perlrun documentation, dòng -s lệnh tùy chọn:

cho phép chuyển đổi thô sơ phân tích cú pháp cho công tắc trên dòng lệnh sau tên chương trình nhưng trước bất kỳ đối số tên tập tin (hoặc trước khi một cuộc tranh cãi của -).

Nếu bạn xóa tùy chọn đó, mọi thứ sẽ hoạt động như bạn mong đợi. Tôi cũng khuyên bạn nên xóa -w vì bạn đã sử dụng chỉ thị use warnings (chỉ thị use warnings đầy đủ tính năng hơn, về cơ bản thay thế tùy chọn -w).

Vì vậy, câu chuyện dài ngắn, làm cho dòng đầu tiên của bạn:

#!/usr/bin/perl 
+0

Cảm ơn, tôi đã sử dụng nó cho các lệnh ngắn trước đó nhưng muốn thay thế chúng (vì tôi vẫn đang sử dụng từ đầy đủ.) –

Các vấn đề liên quan