Я пытаюсь написать Perl-скрипт для поиска в текстовом файле, найти все десятичные числа и изменить их с помощью некоторого коэффициента масштабирования. До сих пор мне удалось извлечь числа с помощью регулярных выражений:
open(INPUT, $inputPath) or die "$inputPath cannot be opened.";
while ($thisLine = <INPUT>) {
while ($thisLine =~ m/(-*\d+\.\d+)/g) {
if(defined($1)) {
$new = $scalingFactor*$1;
print $new."\n";
}
}
}
close (INPUT);
Однако я еще не выяснил, как заново вставить новые значения в файл. Я попытался использовать s/(-*\d+.\d+)/$scalingFactor*$1/g
для подстановки, но, конечно, это вставило строковое представление $scalingFactor
вместо вычисления выражения.
Я новичок в Perl, поэтому любая помощь будет принята с благодарностью. Заранее спасибо,
1010 * Дан *
Редактировать: Решение (на основе ответа Романа)
while ($thisLine = <INPUT>) {
$thisLine =~ s/(-*\d+\.\d+)/$scalingFactor*$1/ge;
prinf OUTPUT $thisLine;
}
Кроме того, решение Шона также отлично сработало для меня. Спасибо всем!