как передать аргументы, такие как 750_000 из командной строки - PullRequest
0 голосов
/ 02 июня 2019

Я не могу передать такие значения, как 750_000 из командной строки, в функцию, такую ​​как usleep, через shift. По-прежнему получаю ".. не числовой".

Есть идеи?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 июня 2019

Синтаксис 750_000 действителен для числовых литералов в исходном коде, где он просто игнорируется при заполнении значения. Это недопустимо при использовании строки, которая уже была создана (например, чтение из аргументов командной строки) в качестве числа. Числа могут храниться в строках с научными обозначениями, как вы заметили. В качестве альтернативы вы можете удалить подчеркивание самостоятельно:

use strict;
use warnings;
use Time::HiRes 'usleep';
my $num = shift;
$num =~ tr/_//d;
usleep $num;
0 голосов
/ 02 июня 2019

Извините, но отвечаю на мой вопрос.

Это может быть сделано с использованием синтаксиса экспоненты.

Примеры:

  1. 1_000_000 можно записать как 1e6
  2. 1_234_567 можно записать как 1.234567e6
...