/ / अनुगामी तारों का पता लगाने के लिए GetOptions का उपयोग कैसे करें? - perl, getopt, getopt-long

पीछे की तारों का पता लगाने के लिए GetOptions का उपयोग कैसे करें? - perl, getopt, getopt-long

मैं पर्ल के लिए बिल्कुल नया हूं और मैं पर्ल स्क्रिप्ट की पार्सिंग स्क्रिप्ट के तर्कों के साथ एक समस्या का पता लगाने की कोशिश कर रहा हूं।

मेरे पास निम्नलिखित पर्ल स्क्रिप्ट है जिसे नमूना-perl.pl कहा जाता है:

use strict;
use warnings;
use 5.010;
use Getopt::Long qw(GetOptions);

my $source_address;
my $dest_address;

GetOptions("from=s" => $source_address,
"to=s" => $dest_address) or die "Usage: $0 --from NAME --to NAMEn";
if ($source_address) {
say $source_address;
}

if ($dest_address) {
say $dest_address;
}

और अगर मैं एक कमांड का उपयोग करता हूँ जैसे (जहां मैं दूसरा विकल्प दर्ज करना भूल गया):

perl sample-perl.pl --from nyc lon
Output will be: nyc

मैं कैसे लागू कर सकता हूं कि अगर अंत में एक अतिरिक्त स्ट्रिंग है, तो इसका पता लगाया जाता है और इसके बजाय एक त्रुटि प्रदर्शित होती है?

उपाय:

इसे जोड़ने से मेरे मामले में कम से कम मदद मिलेगी:

if(@ARGV){
//throw error
}

उत्तर:

उत्तर № 1 के लिए 1

कॉल करने के बाद GetOptionsमें किसी भी शेष कमांड लाइन विकल्पों के लिए जाँच करें @ARGV सरणी। यह मानता है कि सभी अप्रत्याशित तर्क एक त्रुटि उत्पन्न करेंगे:

use strict;
use warnings;
use 5.010;
use Getopt::Long qw(GetOptions);

my $source_address;
my $dest_address;

GetOptions("from=s" => $source_address,
"to=s" => $dest_address) or die "Usage: $0 --from NAME --to NAMEn";

@ARGV and die "Error: unexpected args: @ARGV";

if ($source_address) {
say $source_address;
}

if ($dest_address) {
say $dest_address;
}

उत्तर № 2 के लिए 1

मैं उत्तर देने में व्यस्त था और मैं देखता हूं कि अब इसका उत्तर दिया गया है, बस कुछ अतिरिक्त जानकारी।

use strict;
use warnings;
use 5.010;
use Getopt::Long qw(GetOptions);

my $source_address;
my $dest_address;

GetOptions("from=s" => $source_address,
"to=s" => $dest_address) or die "Usage: $0 --from NAME --to NAMEn";

@ARGV and die "To many arguments after --from or --to : @ARGV ";

if ($source_address) {
say $source_address;
} else {
say "Error: No Source specified"; #Check to see if --from is actually specified, else print error.
}

if ($dest_address) {
say $dest_address;
} else {
say "Error: No destination specified"; #Check to see if --to is actually specified, else print error.
}

तो संक्षेप में