Perl 基于ARGV的变量选择

Perl 基于ARGV的变量选择,perl,variables,argv,Perl,Variables,Argv,我有一个来自bash脚本的输入ARGV值,它是(yes)或(no)。 我需要(是)或(否)等于一个数值(1)或(0)和输出 基于该ARGV值,将其作为数值 我的尝试是让这样的东西起作用:script.pl yes& my $VAR1= $ARGV[0]; my $yes=1; my $no=0; print $VAR1; 打印输出为:1(不是“是”字) 抱歉,我的示例显然很愚蠢,因为$VAR1显然是我用作ARG值的值。所以我要做的是拿一个ARGV,对照一个预设值列表检查它,然后

我有一个来自bash脚本的输入ARGV值,它是(yes)或(no)。 我需要(是)或(否)等于一个数值(1)或(0)和输出 基于该ARGV值,将其作为数值

我的尝试是让这样的东西起作用:script.pl yes&

my $VAR1=         $ARGV[0];
my $yes=1;
my $no=0;
print $VAR1;
打印输出为:1(不是“是”字)

抱歉,我的示例显然很愚蠢,因为$VAR1显然是我用作ARG值的值。所以我要做的是拿一个ARGV,对照一个预设值列表检查它,然后输出该预设值

谢谢


**我是个笨蛋。如果我没有正确解释,我深表歉意。

因此,您希望根据一个值查找另一个值。为此,哈希通常是要使用的工具

my %yes_no_to_bool = (
   yes => 1,
   no  => 0,
);

@ARGV == 1
   or die("usage\n");

my ($arg) = @ARGV;

exists($yes_no_to_bool{$arg})
   or die("usage\n");

my $bool = $yes_no_to_bool{$arg};

您可以尝试使用散列,例如:
perl-E'%input\u map=(yes=>1,no=>0);假设$input_map{+shift}'yes
perl-E正在命令行中运行它。我如何在我的脚本中以ARGV的形式编写它?这个变量是从另一个脚本传递过来的,我正在做一些更复杂的事情,在perl脚本中只是“是”或“否”。出于安全考虑,我只是把它作为一个例子。如果我知道如何获取ARGV值并对照预设值列表进行检查,那么输出就是预设值,那么我很乐意从那里开始。嗨,阿尔比。我的例子中的
shift
shift@ARGV
的快捷方式,有人能投票支持我的问题吗?我收到了-2,这损害了我以后发帖的能力。我不知道我做错了什么,也不知道如何改正。嗨,阿尔比。我不知道你还需要什么信息来解决你的问题。但请随时通过电子邮件与我联系以获得进一步帮助:)