如何从命令行传递 750_000 之类的参数

how to pass arguments like 750_000 from command line

我无法通过 shift 将 750_000 这样的值从命令行传递给 usleep 这样的函数。仍然收到“.. 不是数字”。

有什么想法吗?

谢谢。

抱歉,回答我自己的问题。

可以使用指数语法来完成。

示例:

  1. 1_000_000可以写成1e6
  2. 1_234_567可以写成 1.234567e6

750_000 语法在源代码中对 numeric literals 有效,在填充值时它会被忽略。当使用已经创建的字符串(例如从命令行参数中读取)作为数字时,它是无效的。如您所述,数字可以使用科学记数法存储在字符串中。或者你可以自己删除下划线:

use strict;
use warnings;
use Time::HiRes 'usleep';
my $num = shift;
$num =~ tr/_//d;
usleep $num;