2016-02-28 67 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