为什么我在以下脚本中出现语法错误?
print "Enter Sequence:";
$a = <STDIN>;
if ($a=="A")|| ($a== "T")|| ( $a == "C")|| ($a== "G")
{
print $a;
}
else
{
print "Error";
}
Run Code Online (Sandbox Code Playgroud)
首先,您有一个语法错误:if语句的条件表达式必须是parens.
第二个错误是通过使用找到的use strict; use warnings;,你应该经常做的事情.错误是使用数字比较(==),其中eq调用字符串比较().
最后一个问题是$a几乎肯定会包含一个以换行符结尾的字符串,所以a chomp是有序的.
直接的问题是,他的整个逻辑表达式if必须在括号中.
此外
您必须使用eq而不是==比较字符串
您的输入字符串将具有尾随换行符,因此它看起来"C\n"与简单的单字符字符串不匹配.chomp在比较之前,您需要输入
通常使用STDIN <>而不是使用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";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |