我意識到問題的名稱並沒有真正說明太多,但我很快就不知道如何解釋,所以這裏是長版本。我應該如何找到幾個可能的字符的索引?
首先,這是我當前的代碼:
#! /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()'' – 2012-04-19 14:36:55
閱讀遞歸下降解析器;在嘗試執行任何操作之前,您應該真正解析該行。想象一下'3 + 5 * 8';你會首先找到「+」,但是需要等到你進行乘法運算。 – chepner 2012-04-19 14:40:49
這對於perl初學者來說是一個相當複雜的任務,我假設它是爲了學習目的。否則,你應該採取弗雷德裏克的建議,並簡單地使用Perl已經工作的數學功能。 – TLP 2012-04-19 14:54:13