use*_*896 0 regex perl pcre arguments
我有一个接受参数的Perl脚本.当我有单值参数时,以下代码就足够了:
switch ($ARGV[0]) {
case "--cmd1" {
$action = "cmd1";
}
case "--cmd2" {
$action = "cmd2";
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个命令,cmd3有一个参数的情况,如--cmd3=SOMETHING.由于SOMETHING可以变化,简单的开关/外壳不再起作用.基本上,我需要在命令本身上做一个开关/案例.我以为我可以使用正则表达式,第一个匹配组是命令,第二个是可选的等号.以下不起作用,但它说明了我正在尝试做的事情.
$ARGV[0] =~ m/(.*?)(=.*){0,1}/;
my $cmd = $1;
my $equals = $2;
switch ($cmd) {
case "--cmd1" {
$action = "cmd1";
}
case "--cmd2" {
$action = "cmd2";
}
case "--cmd3" {
$action = "cmd3";
print $equals;
}
Run Code Online (Sandbox Code Playgroud)
:::::::::::::::::::::::::::::::::::编辑:::::::::::::: :::::::::::::::::::::::::::::::::::::::
我想通了,但我会给那个回答upvotes并接受的人.我无法使用,因为这意味着重组一切.这是解决方案.
switch ($ARGV[0]) {
case "--cmd1" {
$action = "cmd1";
}
case "--cmd2" {
$action = "cmd2";
}
case m/--cmd3(=.*)?/ {
$ARGV[0] =~ m/--cmd3(=.*)?/;
$action = "cmd3";
print $1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |