如何使用 Getopt::Std 设置默认值?
我正在尝试在 Perl 脚本中使用 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;
这里前两个变量($inputfile,$outputfile)是强制性的,但最后一个变量($parameter_value)是可选的,可以忽略。
当在命令行中忽略 -p
标志时,我尝试将某个值默认设置为最后一个变量 ($parameter_value)。
我尝试使用这个:
my $parameter_value = our $opt_p || "20";
当在命令行中忽略 -p 标志时,它会传递正确的值。但问题是,当我从命令行提供一些值(例如 -p 58)时,相同的值 20 被传递给程序,而不是我从命令行传递的 58。
您能指出我在这里犯的错误来帮助我吗?
谢谢。
I am trying to collect the values from command line using Getopt::Std in my Perl script.
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;
Here the first two variables ($inputfile,$outputfile) are mandatory but the last variable ($parameter_value) is optional and can be ignored.
I am trying to set some value by default to the last variable ($parameter_value) when the -p
flag is ignored at the command line.
I tried using this:
my $parameter_value = our $opt_p || "20";
Here its passes the correct value when -p flag is ignored at command line. But the problem is when I am providing some value from the command line (for instance -p 58), the same value 20 is passed to the program instead of 58 which I passed from command line.
Can you please help me out by pointing the mistakes I am making here?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
最好的办法是使用 Getopt::Long 并使用哈希而不是单个变量。
然后您可以通过预填充数组来传递默认值
The best thing is to use Getopt::Long and use a hash instead of individual variables.
Then you can pass default values by pre-populating the array
我建议在调用 getopts 之前将 opt 变量设置为默认值。此外,您还可以在使用消息中使用 $opt_ 变量来显示默认值。
I suggest setting the opt variables to defaults prior to calling getopts. Additionally, you can then use the $opt_ variables in your usage message to show the default values.