На основе это руководство для Подвижного мой .gitignore включает:
.DS_Store
*.swp
*~.nib
build/
*.pbxuser
*.perspective
*.perspectivev3
я также принял решение включать:
*.mode1v3
*.mode2v3
, который, согласно это сообщение списка рассылки Apple , "определенные для пользователя настройки проекта".
И для Xcode 4:
xcuserdata
См. perldoc perlop . Для сравнения строк используйте lt
, gt
, eq
, ne
и cmp
:
Двоичный
eq
возвращает истину, если левый аргумент по строке равен правому аргументу.Двоичный
ne
возвращает истину, если левый аргумент по строке не равен правому аргументу.] Двоичный
cmp
возвращает -1, 0 или 1 в зависимости от того, является ли левый аргумент строковым меньшим, равным или большим, чем правый аргумент.Двоичный
~~
сопоставляет свои аргументы. ...
lt
,le
,ge
,gt
иcmp
используют порядок сортировки (сортировки), указанный в текущей локали, если унаследованная локаль (но неиспользует локаль ': not_characters'
) находится в эффект. См. perllocale . Не смешивайте их с Unicode, только с устаревшими двоичными кодировками. Стандартные модули Unicode :: Collate и Unicode :: Collate :: Locale предлагают гораздо более эффективные решения проблем сопоставления.
cmp
Сравнить
'a' cmp 'b' # -1
'b' cmp 'a' # 1
'a' cmp 'a' # 0
eq
Равно
'a' eq 'b' # 0
'b' eq 'a' # 0
'a' eq 'a' # 1
ne
Не равно
'a' ne 'b' # 1
'b' ne 'a' # 1
'а' не 'а' # 0
lt
Менее
'a' lt 'b' # 1
'b' lt 'a' # 0
'a' lt 'a' # 0
le
Меньше или равно
'a' le 'b' # 1
'b' le 'a' # 0
'а' ле 'а' # 1
gt
Больше, чем
'a' gt 'b' # 0
'b' gt 'a' # 1
'a' gt 'a' # 0
ge
Больше или равно
'a' ge 'b' # 0
'b' ge 'a' # 1
'a' ge 'a' # 1
См. perldoc perlop
для получения дополнительной информации.
(Я немного упрощаю это, поскольку все, кроме cmp
, возвращают значение, которое одновременно является пустой строкой и числовое нулевое значение вместо 0
и значение, которое представляет собой как строку '1'
, так и числовое значение 1
. Это те же значения, которые вы всегда будете получить из логических операторов в Perl. На самом деле вы должны использовать возвращаемые значения только для логических или числовых операций, и в этом случае разница не имеет значения.)
В дополнение к исчерпывающему списку операторов сравнения строк Синан Юнюр, Perl 5.10 добавляет Оператор интеллектуального сопоставления.
Оператор интеллектуального сопоставления сравнивает два элемента в зависимости от их типа. См. Диаграмму ниже для поведения 5.10 (я считаю, что это поведение немного изменилось в 5.10.1):
perldoc perlsyn
«Подробное интеллектуальное сопоставление» : Поведение интеллектуального сопоставления зависит о том, что это за аргументы. Он всегда коммутативен, т.е.
$ a ~~ $ b
ведет себя так же, как$ b ~~ $ a
. Поведение определяется следующей таблицей: первая строка, которая применяется в любом порядке,
$ a $ b Тип предполагаемого соответствия кода соответствия ====== ===== ===================== ============= (перегрузка важнее всего) Код [+] Код [+] ссылочное равенство $ a == $ b Любой код [+] скалярная истина $ b -> ($ a) Хэш Хеш-ключи идентичны [ключи сортировки% $ a] ~~ [ключи сортировки% $ b] Существование хеш-среза массива хешей grep {exists $ a -> {$ _}} @ $ b Хэш-ключ хеш-функции Regex grep grep / $ b /, ключи% $ a Хеш Существуют любые хеш-записи $ a -> {$ b} Массив Массивы массивов идентичны [*] Массив Regex массив grep grep / $ b /, @ $ a Array Num array содержит число grep $ _ == $ b, @ $ a Массив Любой массив содержит строку grep $ _ eq $ b, @ $ a Любое undef undefined! Определено $ a Любой шаблон Regex соответствует $ a = ~ / $ b / Code () Результаты Code () равны $ a -> () eq $ b -> () Any Code () простая истина закрытия $ b -> () # игнорируем $ a Num numish [!] Числовое равенство $ a == $ b Любое строковое равенство Str $ a eq $ b Любое числовое равенство $ a == $ b Любая Любая строка равенство $ a eq $ b + - это должна быть ссылка на код, прототип которой (если есть) не "" (подпрограммы с прототипом "" обрабатываются записью 'Code ()' ниже) * - то есть каждый элемент соответствует элементу того же индекса в другом массив. Если найдена круговая ссылка, мы возвращаемся к ссылочной равенство. ! - либо действительное число, либо строка, которая выглядит как число«Код соответствия», конечно, не представляет собой настоящий код соответствия: он нужен только для объяснения предполагаемого значения. В отличие от grep, оператор интеллектуального сопоставления при каждой возможности выполняет короткое замыкание.
Пользовательское соответствие через перегрузку Вы можете изменить способ сопоставления объекта, перегрузив оператор
~~
. Это превосходит обычную семантику интеллектуального соответствия. См.перегрузка
.
print "Matched!\n" if ($str1 eq $str2)
Perl имеет отдельные операторы сравнения строк и числовых сравнений для облегчения набора текста на языке. Вы должны прочитать perlop для всех различных операторов.