我正在尝试使用print
和定位终端光标\e
句法: print "\e[<row>;<col>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
Run Code Online (Sandbox Code Playgroud)
Bash等价物: echo -ne "\e[$(($row*2));${col}H"
printf可用于将计算与打印格式完全分开:
$row = 1; $col = 1;
printf "\e[%d;%dH", $row, $col;
printf "\e[%d;%dH", $row*2, $col;
Run Code Online (Sandbox Code Playgroud)
试试这个:
$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
Run Code Online (Sandbox Code Playgroud)
在字符串之外进行计算并合并结果.
Perl不会插入表达式,只是插入变量和解引用(它会在解引用中计算表达式).要获得所需的结果,您必须使用连接运算符计算字符串外的表达式.
:
print "\e[".($row * 2).";${col}H";
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用printf
:
printf "\e[%d;%dH", $row*2, $col;
Run Code Online (Sandbox Code Playgroud)
正如Diab Jerius指出的那样,你也可以使用Baby Cart "隐藏的操作员".