Perl числовые переменные - PullRequest
1 голос
/ 26 июля 2011

Perl и я не согласны с тем, является ли переменная числом или нет.Конечно, я ошибаюсь, но почему?

my $bytes = 0;
# . . .
$bytes = $bytes + length($text);
# . . .
my $MB = $bytes / 1048576;
my $string = sprintf("Downloaded: %.1f MB\n", MB);

дает Argument "MB" isn't numeric in sprintf at foo.pl line 200..

На самом деле, это число, которое можно увидеть, когда я использую

my $string = "Downloaded: $MB MB\n";

, который устанавливает строку в Downloaded: 3.09680080413818 MB.

Редактировать: Ах, глупая ошибка, спасибо, что поймал ее.

Ответы [ 2 ]

9 голосов
/ 26 июля 2011

Вам нужна переменная сигил:

my $bytes = 0;
# . . .
$bytes = $bytes + length($text);
# . . .
my $MB = $bytes / 1048576;
my $string = sprintf("Downloaded: %.1f MB\n", $MB);   # <--- note the $MB at the end
3 голосов
/ 26 июля 2011

Похоже, вы, вероятно, имели в виду:

my $string = sprintf("Downloaded: %.1f MB\n", $MB);

, кроме того, это должно работать.

...