2016-02-28 1 views
-2

Имея проблему с выражением if в Perl, инструкция if if не работает. Что я делаю неправильно, потому что я использую строгий и предупреждающий модуль, но все же мой оператор if не работает.Как сделать оператор if в perl?

#!/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

Хотя это действительно так, как вы его написали (случайно, я думаю), пожалуйста, вызовите свои подпрограммы следующим образом: 'Granted();', то есть с помощью parens '()' и final ';'. ';' _may_ будет опущен после последнего оператора в блоке (как и вы), но он уродлив. – PerlDuck

+1

В случае сомнений: используйте данные: Dumper; Хранитель $ Data :: :: Useqq = 1; print Dumper $ name; ' – TLP

ответ

2

Вы неправильно определили проблему. if в порядке, проблема в данных, которые вы сравниваете с вводом.

Когда вы читаете из дескриптора файла, вы включаете символ разделителя записей (по умолчанию это новая строка).

Вы сравниваете "jake\n" по "jake".

См. Также chomp.