2013-11-18 3 views
1

Я хочу, чтобы вы просто хотели продолжить диалог в моем скрипте pl. Это выглядит так:Почему это не удается? Сравнение строк в Perl

print "continue? (Y/n)\r\n"; 
$ans = <>; 
if("$ans" eq "n"){ 
    print "$ans"; 
    exit 0; 
} 
print "still here"; 

Если я пишу n, он не вводит оператор if, почему? Выход 0; правильный способ выхода из программы ?. Если я просто напечатать переменную $ анс она печатает п, что я напечатал

ответ

5

использовать это:

chomp $ans; 

вы должны раздеться \ п

Демо:

print "continue? (Y/n)\r\n"; 
$ans = <>; 
chomp $ans; 
if("$ans" eq "n"){ 
    print "$ans"; 
    exit 0; 
} 
print "still here"; 
+0

если ((Chomp $ ans) eq "n") { \t print "$ ans"; \t выход 0; } это все еще печатает «все еще здесь»:/и no n –

+5

Что 'chomp' возвращено * не * измененная строка. см. [doc] (http://perldoc.perl.org/functions/chomp.html) – Jokester

+1

@TheDermerged 'chomp $ ans' не возвращает измененные $ ans, вам нужно вызвать его в отдельном выражении, а потом сравните $ ans. – ysth

Смежные вопросы