2016-02-28 65 views
-2

如果在Perl中if语句有问题,我的if语句不起作用。我做错了什么,因为我使用严格和警告模块,但仍然我的if语句不起作用。如何在perl中执行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 
+1

没有理由使用'“$ name”'。只需使用'$ name'。但是在做比较之前,你必须在'$ name'的末尾修剪换行符。 –

+0

虽然它是有效的,但是你可以这样写(偶然,我猜),请调用你的子程序,例如:'授予();',即用parens()'和最后一个';'。 '''_may_在块中的最后一个语句之后可以省略(像你一样),但它很丑。 – PerlDuck

+1

如有疑问:'使用Data :: Dumper; $数据::自卸车:: Useqq = 1;打印Dumper $ name;' – TLP

回答

2

您误诊了这个问题。 if没问题,问题是你正在比较输入的数据。

从文件句柄中读取时,会包含记录分隔符(默认情况下为新行)。您可以比较"jake\n""jake"

另请参阅chomp