爲什麼在下面的腳本中出現語法錯誤?爲什麼我的複合語句中出現語法錯誤?
print "Enter Sequence:";
$a = <STDIN>;
if ($a=="A")|| ($a== "T")|| ($a == "C")|| ($a== "G")
{
print $a;
}
else
{
print "Error";
}
爲什麼在下面的腳本中出現語法錯誤?爲什麼我的複合語句中出現語法錯誤?
print "Enter Sequence:";
$a = <STDIN>;
if ($a=="A")|| ($a== "T")|| ($a == "C")|| ($a== "G")
{
print $a;
}
else
{
print "Error";
}
首先,你有一個語法錯誤:一個if
語句的條件表達式必須在括號。
第二個錯誤是使用use strict; use warnings;
發現的,應該始終這樣做。錯誤是使用數字比較(==
),其中字符串比較(eq
)被調用。
最後一個問題是$a
幾乎肯定會包含一個以換行符結尾的字符串,因此chomp
是按順序排列的。
print「Enter Sequence:」; $ a =
@ user3434415:你想'$ a =
所以你已經修復了第一個錯誤,但是你仍然沒有使用'use strict;使用警告;''''eq'和'chomp'。 – ikegami
目前的問題是他整個if
的邏輯表達式必須在括號內。
此外
必須使用eq
,而不是==
比較字符串
你輸入的字符串將有一個換行符,所以它看起來像"C\n"
,並不會匹配一個簡單的字符串。在比較之前,您需要輸入chomp
通常使用<>
而不是<STDIN>
從STDIN讀取更好。你可以在命令行中輸入文件,或從標準輸入讀,如果沒有輸入被提供
您這樣,必須始終把和use strict
在use warnings
程序的頂部。這將捕捉許多您可能忽略的簡單錯誤
您不應該使用$a
作爲變量名稱。它是Perl本身保留的一個符號,並且沒有說明變量的用途
最好使用正則表達式來進行簡單的比較。它使你的代碼更容易閱讀,通常會使執行非常快得多
請看看這個節目,我覺得你想要做什麼。
use strict;
use warnings;
print "Enter Sequence: ";
my $input = <>;
chomp $input;
if ($input =~ /^[ATCG]$/i) {
print $input, "\n";
}
else {
print "Error";
}
什麼是chomp?我仍然)||那個錯誤? – user3434415
非常尷尬:(我只是要求用戶輸入A G C T,如果他沒有輸入那麼它會返回錯誤!如果他進入它將返回輸入 – user3434415
其他不工作,它只是拋出什麼我打印 – user3434415