1

我正在尝试编写一个使用 getopts 收集用户输入的脚本。我需要能够限制用户可以输入的值。我看到了如何设置默认值,但是我一直无法找到任何方法来设置允许值列表......所以,

我正在尝试使用Config::Simple存储在文本文件中的值创建一个数组以用于验证。

values.txt 的内容

ChangeCategories resolution, storm

main.pl 的内容

#---create array from values.txt ChangeCategories

    my @chg_cats = $cfg->param("ChangeCategories");
      unlink $_ for @chg_cats;

#----grab user input via getopts
my $change_categories = $opt_c || die "Please enter a valid change category; @chg_cats";

The issue occurs when I attempt to do the pattern match, it is matching only the first value listed on the ChangeCategories line in the values.txt file.

#---pattern mathching code

my $valid_category;
chomp(@chg_cats);
foreach (@chg_cats) {
#@foreach my $line (@chg_cats) {
if(($_ =~ $change_categories) )
#if(($_ =~ m/$change_categories/) )
#if(($_ eq $change_categories) )

正如你所看到的,我已经尝试了许多结构来纠正这个问题,并验证我每次都能得到正确的匹配结果。我不确定这是否与“咀嚼”有关,但是,我已经尝试了所有我能想到的模式。我是 Perl 的初学者,非常感谢任何和所有的帮助......如果有人能告诉我一个更简单/更清洁的方法来实现这个结果,我将非常感激

4

0 回答 0