Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Изучаем Perl - Шварц Р.

Шварц Р., Кристиансен Т. Изучаем Perl — Москва, 2002. — 324 c.
Скачать (прямая ссылка): izuchaemperl2002.djvu
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 124 >> Следующая

т.е.
$s = substr(^строка, ^начало, $длина) ;
198
Изучаем Perl
Начальная позиция определяется так же, как в функции index: первый символ
- нуль, второй символ - единица и т.д. Длина - это число символов,
которые необходимо извлечь, начиная от данной позиции: нулевая длина
означает, что символы не извлекаются, единица означает получение первого
символа, двойка - двух символов и т.д. (Больше символов, чем имеется в
строке, извлечь нельзя, поэтому если вы запросите слишком много, ничего
страшного не произойдет.) Выглядит это так:
$hello = "hello, world1";
$grab = substr($hello, 3, 2); # $grab получает "lo"
$grab = substr($hello, 7, 100); # 7 до конца, или "world!"
Можно даже выполнять подобным образом операцию "десять в степени п" для
небольших целочисленных степеней, например:
$big = substr("10000000000",0,$power+l); # 10 ** $power
Если количество символов равно нулю, то возвращается пустая строка. Если
либо начальная, либо конечная позиция меньше нуля, то такая позиция
отсчитывается на соответствующее число символов, начиная с конца строки.
Так, начальная позиция -1 и длина 1 (или более) дает последний символ.
Аналогичным образом начальная позиция -2 отсчитывается от второго символа
относительно конца строки:
$stuff = substr("a very long string",-3,3); # последние три символа
$stuff = substr("a very long string",-3,1); # буква i
Если начальная позиция указана так, что находится "левее" начала строки
(например, задана большим отрицательным числом, превышающим длину
строки), то в качестве начальной позиции берется начало строки (как если
бы вы указали начальную позицию 0). Если начальная позиция - большое
положительное число, то всегда возвращается пустая строка. Другими
словами, эта функция всегда возвращает нечто, отличное от сообщения об
ошибке.
Отсутствие аргумента "длина" эквивалентно взятию в качестве этого
аргумента большого числа - в этом случае извлекается все от выбранной
позиции до конца строки*.
Если первый аргумент функции substr - скалярная переменная (другими
словами, она может стоять в левой части операции присваивания), то сама
эта функция может стоять в левой части операции присваивания. Если вы
перешли к программированию на Perl из С, вам это может показаться
странным, но для тех, кто когда-нибудь имел дело с некоторыми диалектами
Basic, это вполне нормально.
* В очень старых версиях Perl пропуск третьего аргумента не допускался,
поэтому первые Perl-программисты использовали в качестве этого аргумента
большие числа Вы, возможно,
столкнетесь с этим в своих археологических исследованиях программ,
написанных Perl.
15. Дригие операции преобразования данных
199
В результате такого присваивания изменяется та часть строки, которая была
бы возвращена, будь substr использована не в левой, а в правой части
выражения. Нопример, substr ($var, 3, 2) возвращает четвертый и пятый
символы (начиная с 3 в количестве 2), поэтому присваивание изменяет
указанные два символа в $var подобно тому, как это приведено ниже:
$hw = "hello world'";
substr($hw, 0, 5) = "howdy"; # $hw теперь равна "howdy world1"
Длина заменяющего текста (который присваивается функции substr) не
обязательно должна быть равна длине заменяемого текста, как в этом
примере. Строка автоматически увеличивается или уменьшается в
соответствии с длиной текста. Вот пример, в котором строка укорачивается:
substr($hw, 0, 5) = "hi"; # $hw теперь равна "hi world'"
В следующем примере эта строка удлиняется:
substr($hw, -6, 5) = "nationwide news"; # заменяет "world"
Процедуры укорачивания и удлинения заменяемой строки выполняются
достаточно быстро, поэтому не бойтесь их использовать - хотя лучше все же
заменять строку строкой той же длины.
Форматирование данных с помощью функции sprin1f()
Функция printf оказывается удобной, когда нужно взять список значений и
создать выходную строку, в которой эти значения отображались бы в
заданном виде. Функция sprintf использует такие же аргументы, как и
функция printf, но возвращает то, что выдала бы printf, в виде одной
строки. (Можете считать ее "строковой функцией printf".) Например, чтобы
создать строку, состоящую из буквы х и значения переменной $У,
дополненного нулями до пяти разрядов, нужно записать:
$result = sprintf("Х%05d",$у);
Описание аргументов функции sprintf вы найдете в разделе sprintf главы 3
книги Programming Perl и на man-странице printf(3) (если она у вас есть).
200
Научаем PerI
Сортировка по заданным критерияль
Вы уже знаете, что с помощью встроенной функции sort можно получить
какой-либо список и отсортировать его по возрастанию кодов ASCII. Что,
если вы хотите отсортировать список не по возрастанию кодов ASCII, а,
скажем, с учетом числовых значений? В Perl есть инструменты, которые
позволят вам решить и эту задачу. Вы увидите, что Perl-функция sort может
выполнять сортировку в любом четко установленном порядке.
Чтобы задать порядок сортировки, следует определить программу сравнения,
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 124 >> Следующая