Tôi đang cố gắng thu thập các giá trị từ dòng lệnh bằng cách sử dụng Getopt::Std trong tập lệnh Perl của tôi.Làm cách nào để đặt giá trị mặc định bằng Getopt :: Std?
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
getopts('i:o:p:');
my $inputfile = our $opt_i;
my $outputfile = our $opt_o;
my $parameter_value = our $opt_p;
Ở đây hai biến đầu tiên ($ inputfile, $ outputfile) là bắt buộc nhưng biến cuối cùng ($ parameter_value) là tùy chọn và có thể bỏ qua.
Tôi đang cố gắng đặt một số giá trị theo mặc định thành biến cuối cùng ($ parameter_value) khi cờ -p
bị bỏ qua tại dòng lệnh.
tôi đã cố gắng sử dụng này:
my $parameter_value = our $opt_p || "20";
Đây đèo nó giá trị đúng khi cờ -p bị bỏ qua tại dòng lệnh. Nhưng vấn đề là khi tôi đang cung cấp một số giá trị từ dòng lệnh (ví dụ -p 58), cùng giá trị 20 được truyền cho chương trình thay vì 58 mà tôi đã chuyển từ dòng lệnh.
Bạn có thể giúp tôi bằng cách chỉ ra những sai lầm tôi đang thực hiện ở đây không?
Cảm ơn bạn.
Tốt nhất :) = +1 – DVK
thanx Sinan, Điều này hoạt động rất tốt và giữ nguyên định dạng mã của tôi. Thanx một tấn. – Suren
Nếu bạn đang sử dụng 5.10+ sẽ tốt hơn nếu sử dụng '//' thay vì '||' vì các phép thử sau này cho sự thật, không được định nghĩa-Ness. Điều này sẽ ngăn bạn không thể vượt qua các giá trị sai (ví dụ: 0). Cách kéo dài để có được hành vi tương đương trước 5.10 là '$ x = xác định $ y? $ y: Z' trong đó 'Z' là giá trị mặc định. –