2014-12-10 2 views
0

Я работал над простой программой проверки паролей с помощью Perl, я сравнивал две строки «abc @ 123» и «» abc », используя оператор eq Perl обрабатывает обе строки как равные .? есть ли способ, чтобы сравнить строку, имеющие символы и числа с другой строкойОператор eq в Perl для обоих символов и целых чисел

+1

Показать код. – toolic

+0

'' abc @ 123 'eq' abc'' is ** not ** true. – TLP

+0

@ikegami Я понял, что именно поэтому я изменил с двойного на одинарные кавычки, чтобы сделать утверждение правильным. – TLP

ответ

7

Включить предупреждения

use warnings; 
my $x = "[email protected]"; 
print $x; 

$xявляется «а», и вы получите предупреждение:

Possible unintended interpolation of @123 in string 

Сообщает вам, что вы проинтерполировали пустой массив @ 123 в свою строку.

При правильном процитировать:

my $x = '[email protected]'; 
if ($x eq 'abc') { 
    print "eq"; 
} 
else { 
    print "not eq"; 
} 

вы получаете 'не эк', как можно было бы ожидать.

Как говорится в TLP, не используя строгие правила и предупреждения, они задают проблемы.

+3

Вы должны добавить, что не используйте 'use strict; использовать предупреждения, 'просит неприятностей. – TLP

+0

Это должно быть стандартным при публикации вопроса «perl». – Sobrique

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