Mat*_*rio 2 string perl if-statement
我写了一个Perl程序,用户应该键入一个用户名.如果他们进入admin,他们应该看到消息
Welcome, admin!
Run Code Online (Sandbox Code Playgroud)
否则控制台输出应该是
The username is incorrect
Run Code Online (Sandbox Code Playgroud)
这是我的代码
use utf8;
print "Username: ";
$username = <STDIN>;
if ( $username eq "admin" ) {
print "Welcome, admin!";
}
else {
print "The username is incorrect.";
}
Run Code Online (Sandbox Code Playgroud)
但无论用户输入什么,程序都会进入else分支机构.
为什么会这样?
每当您不确定比较失败的原因时,请确保您知道变量中的内容:
use Data::Dumper;
local $Data::Dumper::Useqq = 1;
print Dumper $variable;
# print Dumper \@array;
# print Dumper \%hash;
Run Code Online (Sandbox Code Playgroud)
像@ikegami建议的那样,你需要使用chomp:
chomp $username;
Run Code Online (Sandbox Code Playgroud)
空<>操作符通常是输入的最佳选择.它将从命令行中命名的任何文件中读取数据,如果没有,则从键盘读取数据
您$username = <STDIN>将从键盘上读取,如果您输入admin,则输入键将包含"admin\n".所以你需要chomp输入结尾的LF字符
你也应该use strict和use warnings 'all'在每一个Perl程序开始
像这样
use strict;
use warnings 'all';
print "Username: ";
my $user_name = <>;
chomp $user_name;
if ( $user_name eq 'admin' ) {
print "Welcome, admin!\n";
}
else {
print "The username is incorrect\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |