【问题标题】:Get the perl string calculation result获取perl字符串计算结果
【发布时间】:2013-09-29 07:06:27
【问题描述】:

如果一个字符串表示如下 $str = "5+2-1"; 我想从那个字符串中得到计算结果。 如何转换为标量来计算它? 谢谢。

【问题讨论】:

    标签: string perl


    【解决方案1】:

    最简单的方法:

    print eval('5+2-1');
    

    但这并不安全:

    print eval('print "You are hacked"');
    

    你需要在eval之前检查字符串。 您也可以使用Math::Expression 模块或 cpan 中的许多其他模块:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Math::Expression;
    
    my $env = Math::Expression->new;
    
    my $res = $env->Parse( '5+2-1' );
    
    # my $res = $env->Parse( 'print you are hacked' );  # no math expression here
    
    print $env->Eval( $res );
    

    【讨论】:

      【解决方案2】:

      如果您确定字符串不包含任何恶意代码,您可以使用 eval 将其内容视为 perl 代码。

      #!/usr/bin/perl
      use strict;
      use warnings;
      
      my $string = "5+2-1";
      
      print eval($string);
      #print 6    
      

      【讨论】:

        猜你喜欢
        • 2018-06-11
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多