На этом шаге мы рассмотрим особенности использования строковых операций отношения.
Сравнение строковых данных базируется на их упорядочении в соответствии с таблицей кодов ASCII, т.е. символ с меньшим кодом ASCII предшествует символу с большим кодом. Сравнение строк осуществляется посимвольно слева направо. Это означает, что если равны первые символы строк, то сравниваются вторые и если они равны, то сравниваются третьи и т.д. Причем, если строки разной длины, то в конец строки меньшей длины добавляется недостающее для равенства количество символов с кодом 0. Следует отметить, что в отличие от некоторых других языков программирования в Perl замыкающие строку пробельные символы являются значимыми при сравнении строк. В следующем примере показаны сравнения строк, иллюстрирующие изложенные правила.
"A" lt "а"; # Результат: истина (код "А" - \101, код "а" - \141) "a" lt "aa"; # Результат: истина (к строке "а" добавляется символ # с кодом \000, который меньше кода \141 # второго символа "а" строки правого операнда) "a" lt "a "; # Результат: истина (к строке "а" добавляется символ # с кодом \000, который меньше кода \040 # замыкающего пробела строки правого операнда) "12" lt "9"; # Результат: истина (код "1" - \061, код "9" - \071) " 9" eq "09"; # Результат: ложь (код " " - \040, код "0" - \060)
Обратим внимание на две последние операции сравнения строковых литералов. Содержимое их операндов может быть преобразовано в правильные числа, и поэтому к ним применимы аналогичные числовые операции отношения. Однако их результат будет существенно отличаться от результата выполнения строковых операций отношения. При использовании операции < в предпоследнем выражении результат будет Ложь, а если в последнем выражении применить операцию ==, то результат будет Истина. Об этом всегда следует помнить, так как Perl автоматически преобразует символьные данные в числовые там, где это необходимо.
На следующем шаге мы рассмотрим логические операции.