Perl:如何在命令中进行数学运算?

 江西风起如斯 发布于 2022-12-04 15:51

我正在尝试使用print和定位终端光标\e

句法: print "\e[;H";

但是,我想使用row乘以2 的值.

我可以在perl中执行此操作而无需额外的变量赋值吗?如果没有,我想row在另一条线上乘以2并不是最糟糕的事情......

$row = 1; $col = 1;
print "\e[$row;${col}H";     # Correct syntax, works fine.
print "\e[$row*2;${col}H";   # Does not work
print "\e[($row*2);${col}H"; # Does not work

Bash等价物: echo -ne "\e[$(($row*2));${col}H"

3 个回答
  • printf可用于将计算与打印格式完全分开:

    $row = 1; $col = 1;
    printf "\e[%d;%dH", $row, $col;
    printf "\e[%d;%dH", $row*2, $col;
    

    2022-12-11 02:14 回答
  • 试试这个:

    $row = 1; $col = 1;
    print "\e[$row;${col}H";     # Correct syntax, works fine.
    print "\e[".($row*2).";${col}H";   # Does not work
    print "\e[".($row*2).";${col}H"; # Does not work
    

    在字符串之外进行计算并合并结果.

    2022-12-11 03:11 回答
  • Perl不会插入表达式,只是插入变量和解引用(它会在解引用中计算表达式).要获得所需的结果,您必须使用连接运算符计算字符串外的表达式.:

    print "\e[".($row * 2).";${col}H";  
    

    或者,您可以使用printf:

    printf "\e[%d;%dH", $row*2, $col;
    

    正如Diab Jerius指出的那样,你也可以使用Baby Cart "隐藏的操作员".

    2022-12-11 03:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有