Как сравнить буквенно-цифровые значения в Perl? - PullRequest
1 голос
/ 07 ноября 2011

Вот мой код:

print $cpu_arch."\n";  
if ($cpu_arch eq'AMD64') {      
    print "Remote machine is 64bit\n";
}

В зависимости от архитектуры процессора, $ cpu_arch возвращает x86 или AMD64.Проблема в том, что независимо от того, что возвращает $ cpu_arch, условие цикла if не выполняется.Я попытался сжать $ cpu_arch, но это тоже не помогает.

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

Оператор для строки eq, как у вас.Ваша проблема не в вашем операторе, а в данных.Скорее всего, вы неправильно буферизуете (измените переменную $|), или у вашего $cpu_arch есть пробел.Или, может быть, вы ищете совпадение с регулярным выражением, а не буквальное совпадение (тогда вы хотите /AMD64/)

1 голос
/ 07 ноября 2011

Ваш код правильный.Либо $cpu_arch не содержит AMD64, либо вы ошибаетесь из-за ложного условия if (возможно, из-за буферизации).

Следующее может помочь вам проверить $cpu_arch.

use Data::Dumper;

{
   local $Data::Dumper::Useqq = 1;
   print(Dumper($cpu_arch));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...