2012-08-22 10 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"; 

पार्स करने में अक्षम पर्ल test.pl --remote --testकमांड लाइन लंबे विकल्पों

ऊपर प्रिंट "0: 0"। मैं पर्ल के लिए नया हूं इसलिए मैं यह निर्धारित करने में असमर्थ हूं कि यह क्यों काम नहीं कर रहा है।

मैंने http://perldoc.perl.org/Getopt/Long.html#Simple-options से "सरल विकल्प" अनुभाग भी चलाया और इससे कुछ भी उत्पन्न नहीं हुआ।

+0

@ raina77ow:

तो, लम्बी कहानी संक्षेप में, अपने पहले लाइन बनाते हैं। –

उत्तर

11

मेरा मानना ​​है कि -s कमांड लाइन विकल्प जिसमें आप अपनी शेड लाइन पर शामिल हैं, आपको काट रहा है। perlrun documentation के अनुसार, -s आदेश पंक्ति विकल्प:

अल्पविकसित स्विच प्रोग्राम नाम के बाद कमांड लाइन पर स्विच के लिए पार्स करने में सक्षम बनाता है, लेकिन किसी भी फ़ाइल नाम तर्कों से पहले (या की एक बहस से पहले -)।

यदि आप उस विकल्प को हटाते हैं, तो चीजों को आपकी अपेक्षा के अनुसार काम करना चाहिए। मैं -w को हटाने की भी सिफारिश करता हूं क्योंकि आप पहले ही use warnings निर्देश का उपयोग कर रहे हैं (use warnings निर्देश अधिक पूरी तरह से दिखाया गया है, अनिवार्य रूप से -w विकल्प को प्रतिस्थापित कर रहा है)। मैं उन्हें था बस इस पोस्ट में शामिल नहीं किया था, -

#!/usr/bin/perl 
+0

धन्यवाद, मैं इसका उपयोग पहले कमांड के लिए कर रहा था लेकिन उनको प्रतिस्थापित करना चाहता था (क्योंकि मैं वैसे भी पूर्ण शब्दों का उपयोग कर रहा था।) –