Цикл Perl foreach
полезен во многих случаях, но когда вам необходим расширенный контроль над приращением, цикл в стиле C - это правильный инструмент:
for (my $top = 0; $top <= 100; $top += 2.5) {...}
$left
должно быть достаточно простымчтобы разобраться.
Страница руководства perlsyn содержит больше информации о различных стилях циклов и ключевых словах, связанных с их управлением.
Наконец, современный код имеет тенденцию использоватьформа с тремя аргументами open
вместе с лексическим дескриптором файла.Измените строку open
на:
open my $file, '>', 'script2.txt' or die $!;
, а затем замените MYFILE
на $file
в остальной части кода.Для этого есть множество причин, в том числе проверка ошибок, предотвращение дублирования дескриптора файла, автоматическое закрытие ... Поиск здесь в SO должен предоставить подробности.
Как указывает ysth, чтобы избежатьлюбые составные ошибки с плавающей запятой, вы можете написать это следующим образом:
my $low = 0;
my $high = 100;
my $step = 2.5;
my $reps = int (($high - $low) / $step);
for my $i (0 .. $reps) {
my $top = $i * $step;
...
}
вы можете заключить это в функцию:
sub range {
my ($low, $high, $step) = @_;
map {$low + $_ * $step} 0 .. int (($high - $low) / $step)
}
и тогда это так просто, как:
for my $top (range 0 => 100, +2.5) {...}