Я понимаю, что имя вопроса на самом деле мало что говорит, но я не знал, как объяснить это в ближайшее время, так что вот длинная версия.Как мне найти индекс нескольких возможных символов?
Во-первых, вот мой текущий код:
#! /usr/bin/perl
use strict;
use warnings;
my $input;
while (<>) {
$input .= $_;
}
$input =~ s/ |\n//g;
print "\n";
То, что я хочу сделать, это калькулятор, например, когда пользователь делает echo "8 * 5 + 21-15" | calculate
, он рассчитает его правильно. Итак, вот мой мыслительный прогресс. Сначала я беру строку целиком и разбиваю ее на все пробельные символы. Затем я хотел проиндексировать() его для появления *, +,/или -. Затем я хотел добавить все символы перед любым из этих операторов в строку, а затем (int) строку, а затем сделать то же самое с частью после оператора, а затем выполнить операцию между ними. Но на самом деле я не знаю, как это сделать. Кроме того, я очень новичок в Perl (3-дневный опыт), поэтому, пожалуйста, подойдите ко мне, если это возможно, медленно.
Большое спасибо.
'echo '8 * 5 + 21-15" | perl -ne 'print eval()' ' –
Прочитайте парсеры рекурсивного спуска; вы должны действительно разбирать линию в целом, прежде чем пытаться выполнять какие-либо операции. Представьте «3 + 5 * 8»; вы сначала найдете «+», но вам нужно подождать, пока вы не сделаете умножение. – chepner
Это довольно сложная задача для начинающего perl, и я предполагаю, что он предназначен для обучения. В противном случае вы должны взять совет Fredrik выше и просто использовать уже работающую математическую функциональность perl. – TLP