为什么我在以下脚本中出现语法错误?
print "Enter Sequence:";
$a = <STDIN>;
if ($a=="A")|| ($a== "T")|| ( $a == "C")|| ($a== "G")
{
print $a;
}
else
{
print "Error";
}
答案 0 :(得分:7)
首先,您遇到语法错误:if
语句的条件表达式必须在parens中。
使用use strict; use warnings;
找到第二个错误,这是您应该经常做的事情。错误是使用数字比较(==
),其中要求进行字符串比较(eq
)。
最后一个问题是,$a
几乎肯定会包含一个以换行符结尾的字符串,因此chomp
是有序的。
答案 1 :(得分:7)
当前问题是if
的整个逻辑表达式必须在括号中。
另外
您必须使用eq
代替==
来比较字符串
您的输入字符串将有一个尾随换行符,因此它看起来像"C\n"
,并且不匹配简单的单字符字符串。在比较之前,您需要chomp
输入
通常最好使用<>
而非<STDIN>
从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";
}