如何在perl中执行if语句?

如何在perl中执行if语句?,perl,perl-module,Perl,Perl Module,Perl中的if语句有问题,我的if语句不起作用。我做错了什么,因为我使用的是strict和warnings模块,但if语句仍然不起作用 #!/usr/bin/env perl use strict; use warnings; sub Granted { print "\n\nAccess Granted\n\n"; } sub Access { print "\n\n\n\n"; sleep 1; print "Enter your name: ";

Perl中的if语句有问题,我的if语句不起作用。我做错了什么,因为我使用的是strict和warnings模块,但if语句仍然不起作用

#!/usr/bin/env perl

use strict;
use warnings;


sub Granted
{
    print "\n\nAccess Granted\n\n";
}


sub Access
{
    print "\n\n\n\n";
    sleep 1;
    print "Enter your name: ";
    my $name = <STDIN>;
    sleep 1;

    if ("$name" eq "jake")
    {
        Granted
    }

}

Access 
#/usr/bin/env perl
严格使用;
使用警告;
转赠
{
打印“\n\n已授予访问权\n\n”;
}
子访问
{
打印“\n\n\n\n”;
睡眠1;
打印“输入您的姓名:”;
我的$name=;
睡眠1;
如果($name“eq”jake)
{
授予
}
}
通道

您误诊了这个问题。
如果
正常,则问题在于您将数据与输入进行比较

从文件句柄读取时,将包含记录分隔符(默认情况下为新行)

您正在将
“jake\n”
“jake”
进行比较


另请参见
chomp

没有理由使用
“$name”
。只需使用
$name
。但是,在进行比较之前,您必须修剪
$name
末尾的换行符。尽管它像您编写的一样有效(我猜是偶然),但请像这样调用您的子例程:
grated(),即带有parens
()
和一个final
可以在块中最后一条语句之后省略(就像您所做的那样),但这很难看$数据::转储程序::Useqq=1;打印转储程序$name