![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Задали курсовую по СПО, достался вариант с PERL.
Я уже кое-что прочитал, но кое-чего не могу найти Есть ли в Perl'е функции Chomp,pop,push... Если есть , то что они делают. По POP и PUSH в принципе сказать могу, что это такое, но как это в перле используется . И если возможно, то примеру этих функций был бы просто рад. ЗЫ А что такое .= ??? Как в С или нет ??? PLEASE HELP !!!!!!!!!!!!!!!!!!!!!! -------------------- Praemonitus, praemunitus |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
$a.='aa' это то же что $a=$a.'aa';
pop - вырезать первый элемент массива насполько помню push - запихнуть список в массив (добавление элементов) Chomp - кажется обрезание ентера на конце |
|||
|
||||
| dimes |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.7.2004 Где: то около СПБ Репутация: нет Всего: 14 |
Нет, это shift так делает а pop последний вырезает
До но только chomp и режет последний '\n' в виндах перевод '\r\n' |
||||
|
|||||
| korob2001 |
|
||||||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Есть. chomp - удаляет из конца переданной ей строки "терминатор", который в текущий момент установлен в переменной $/, по умолчанию, это символ перевода строки \n. В более ранних версиях Perl использовали chop, но он менее удобный, чем chomp, потому как удаляет любой символ с конца строки. Пример:
Например юзер ввел имя Вася. По идее мы хотели бы получить такую строку: Вася, hello! но на самом деле получим такой результат: Вася , hello! Вся беда в том, что когда юзер ввёл имя он нажал клавишу ENTER, для передачи имени в программу, другими словами в программу было передано имя юзера за которым следует символ перевода строки \n. Вот тут нам и понадобится chomp. Так теперь будет выглядеть наш код:
Теперь мы получим то, что хотели. Но можно было бы записать и более компактно, например так:
Хотя по большому счёту это не важно. ==================================================== pop - удаляет из массива последний элемент, точнее было бы сказать что не удаляет, а вырезает, потому как этот вырезанный элемент можно сохранить в переменной. Допустим у нас есть массив @names c именами, и мы хотим удалить последнее имя в массиве и вместо него вставить другое. Кстати обрати внимание на то, что в примере ниже так же используется и push:
Из примера видно, что push, наоборот, вставляет список в конец массива. Заметь, СПИСОК. С помощью push, можно добавить несколько элементов в конец массива. Например так:
В итоге в конце массива @names, добавится 4 элемента, в том порядке, в каком они написаны в push. ====================================================
Я не знаю C. Вобщем в Perl это краткая запись конкатенации. Например у нас есть переменная с именем пользоаптеля. И мы хотим к имени добавить строку ", hello!", как в примере выше. Для примера я воспользуюсь кодом, которым пытался пояснить что такое chomp:
Здесь была использована та конкатенация о которой ты спрашивал, она аналогична такой записи:
Только, краткий вариант будет работать быстрее, так как пременная $name вычисляется только 1 раз, а во втором варианте 2 раза. Удачи. Мля.... Пока писал у меня курица сгорела. Это сообщение отредактировал(а) korob2001 - 5.12.2004, 16:38 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||||||||||
|
|||||||||||||||||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
А еще такой вопрос :
Насколько правильн опонял из краткого курса, то объяления как в С или Паскале в Перле нет. ТАк вот, такой вопрос. Если был оператор : $qwerty:=123; ....................... А потом $qwerty_second=Chomp($qwerty); Ошибка при компиляции выскочит ??? my $last_name = pop @names; Может my $last_name = pop( @names); ??? И что такое "my" ???? Это сообщение отредактировал(а) Marriage - 16.12.2004, 14:47 -------------------- Praemonitus, praemunitus |
|||
|
||||
| chaos |
|
||||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
В твоем случае будет ошибка компиляции тк $qwerty:=123; из-за : Дальше chomp заметь не Chomp, функция возвращает общее кол-во символов, удаленных из всех переданных ей аргументов, а удаляет она с конца символы каторые совпадают с символами содержащимися в переменной $/. Вот тебе наглядный пример:
В твоем примере должен быть 0. Это первое. Второе:
Можно со скобками можно без, как тебе нравится Третье: my - это как раз и есть интересующие тебя обявления, только без конкретизации типа как в С и паскале, и вообще my объявляет перечисленные переменные как локальные для текущего блока, пример :
Это сообщение отредактировал(а) chaos - 16.12.2004, 15:14 |
||||||||
|
|||||||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
еще вопросы ???
|
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
ЕСть ... Пример двумерного массива ... Пример операторов IF (полная форма с ELSE ), While и Unless .... Оччень надо .... Это сообщение отредактировал(а) Marriage - 19.12.2004, 01:24 -------------------- Praemonitus, praemunitus |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
Marriage А книжку посмотреть?
массив: $a[1][2]=1; хешь: $b{'a'}{'b'}=2; А что значит пример операторов? if/unless (условие) {делать}elsif else{делать} делать if/unless условие; while (EXPR) {} for ($i = 2; $i < 5; ++$i) { print $i; } |
|||
|
||||
| cybear |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 20.11.2004 Где: Tallinn, Estonia Репутация: нет Всего: нет |
двумерных массивов нету - есть Array of Arrays - смотри man perllol - там очень все хорошо прописано, с примерами.
|
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Немае ... А покупать - денег лишних нет -------------------- Praemonitus, praemunitus |
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
People !!!
Кинте кто-нить исходникна перле большой (на пару печатных страниц), проверить лексический анализатор надо ... -------------------- Praemonitus, praemunitus |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
пойдет такое |
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
chaos
Сенкс. -------------------- Praemonitus, praemunitus |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
ЗЫ
А что такое .= ??? Как в С или нет ??? чето не припоминаю такую операцию(точка) в с |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |