Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将条件运算符解析为字符串并用作条件运算符_String_Perl_Operators - Fatal编程技术网

String 将条件运算符解析为字符串并用作条件运算符

String 将条件运算符解析为字符串并用作条件运算符,string,perl,operators,String,Perl,Operators,在上面的If语句中,If的计算结果总是true 我如何解决这类问题,即$sign=“您愿意做的事情(将字符串作为代码执行)可以用 .这并不意味着这是最合适的方式 但是,只有在保证输入安全并检查 它 一个更好的方法是检查操作员,然后自己决定 如何继续。如果使用最新的Perl版本 功能可以方便地执行此操作: my $line ="Corner:Default,Output:fall_delay_slew_1,Mean=34.97p,Std- dev=1.767p,Min=30.02p,Ma

在上面的If语句中,If的计算结果总是true

我如何解决这类问题,即
$sign=“您愿意做的事情(将字符串作为代码执行)可以用
.这并不意味着这是最合适的方式
但是,只有在保证输入安全并检查
它

一个更好的方法是检查操作员,然后自己决定 如何继续。如果使用最新的Perl版本 功能可以方便地执行此操作:

my $line ="Corner:Default,Output:fall_delay_slew_1,Mean=34.97p,Std-      dev=1.767p,Min=30.02p,Max=39.71p";    #added semicolon
my $my_value="COND = Mean > 3"; #this has come from the parsed file.
$my_value =~ m/(\w+)\s*(.)\s*(\d+)/;
my $cond=$1;
my $sign=$2;
my $value=$3;
print "DEBUG:cond is $cond and sign $sign and value $value \n";
if ( $line =~ m/$cond=(.*?),/) {
if ( "$value $sign $1" ) {
    print "$value is $sign than $1\n";
} else {
    print "actual value is less\n";
 }
}
如果已经使用5.010或更高版本,则不需要使用功能“开关”
给定($符号){
当(“”){说“$cond大于$value”}
违约{
警告“无法识别的运算符“$sign”\n”;
#决定做什么
}
}

更新了代码。对于落选的选民,我必须说,一旦我知道负面评级的原因,我将很高兴对这个答案进行更正。如果我忽略了什么,我将提前道歉。
use feature 'switch'; # not needed if you already use 5.010 or greater

given ($sign) {
    when ('<') { say "$cond less than $value" }
    when ('>') { say "$cond greater than $value" }
    default {
        warn "unrecognized operator `$sign'\n";
        # decide what to do
    }
}