Консультация # 51256: Доброго врение суток...
посмотрите пожалуйста код и скажите где ошибка.
Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", программа должна вывести то что ввел пользователь. У меня почемуто в любом случае выводится "ошиб...
Консультация # 37078: Здрысть, уважаемые эксперты!
Пишу GCI-скрипт на perl. Внутри скрипта есть две строковых переменных $str1 и $str2. Одна из них читается из файла, другая от юзера. Слова вводятся на английском без пробелов и спецсимволов. В обоих переменных слово одинаковое, но, когда пишу
if($str1 ne $str2) {...}, то этот ифец срабатывает, говоря о том, что ...Консультация # 71939: Никак не пойму, как обрабатывать символы в строке.
Предположим есть:
$str = "hello, perl";
Как в цикле пробежатся по всем символам и сделать с ними что-нибудь ?
Я естествено попробовал тыкнуть пальцем в небо и написал так: $str[2] - естественно perl лишь ответил молчанием, не Си все таки.
Конкретно решаю такую задачу. ...
Доброго врение суток...
посмотрите пожалуйста код и скажите где ошибка.
Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", программа должна вывести то что ввел пользователь. У меня почемуто в любом случае выводится "ошибка ввода"
Всем спасибо...
Здравствуйте, Lperw!
Ошибка впринципе в том что вы очень уж закрутили условием cмотрим что у вас:
if( $ans ne "yes" or $ans ne "no"){print "mistake;}
Если $ans yes - то будет истинным второе значение и or вернет 1. Если $ans no - первое, опять таки 1, если будет вообще что-то левое, то опять таки будет 1 - т.е. при любом раскладе будет печатать mistake. Условие лучше привести к виду:
if($ans eq yes or $ans eq no){print "your string $ans"} ... ну и так далее, или свести к регулярному выражнию как вам посоветовали раньше:
#!/usr/bin/perl -w
print qq( \n);
$ans = ;
if ($ans=~m/^(да|нет)$/ ){
print "your string $ans \n";
}else{
print "mistake \n";
}
По поводу use POSIX и use locale - не знаю - у меня все прекрасно и без них работает :).
Консультировал: Muad Dib
Дата отправки: 06.08.2006, 04:15
Здрысть, уважаемые эксперты!
Пишу GCI-скрипт на perl. Внутри скрипта есть две строковых переменных $str1 и $str2. Одна из них читается из файла, другая от юзера. Слова вводятся на английском без пробелов и спецсимволов. В обоих переменных слово одинаковое, но, когда пишу
if($str1 ne $str2) {...}, то этот ифец срабатывает, говоря о том, что строки разные, хотя они одинаковые. В чём гвоздь? Как лечить?
А гвоздь в том, что текстовый файл имеет вид: string1\n
string2\n
..
То есть вы читаете файл со спец-символами, а строка, введенная вручную, не имеет их...
Как лечить? Отфильтруйте символы конца строки функцией chomp().
Пример: chomp $str1, $str2;
if($str1 ne $str2) {...},
Успехов!
Приложение:
Консультировал: Лучников Юрий Владимирович
Дата отправки: 09.03.2006, 14:19
Никак не пойму, как обрабатывать символы в строке.
Предположим есть:
$str = "hello, perl";
Как в цикле пробежатся по всем символам и сделать с ними что-нибудь ?
Я естествено попробовал тыкнуть пальцем в небо и написал так: $str[2] - естественно perl лишь ответил молчанием, не Си все таки.
Конкретно решаю такую задачу. Есть текст, в нем данные разбиты в группы по 3 байта, первые два байты мне нужно обработать особым образом, 3-ий вообще не нужен.
Собственно это все мелочи, которые решаются ручками в течении нескольких минут, я не пойму как обращаться к отдельным символам в строке.
Здравствуйте, Torsten!
Обрабатывать строку посимвольно можно обработав ее ф-цией split с пустым шаблоном. Т.е. @str = split(//,$str); вернет вам список из отдельных символов строки, а дальше уже обрабатывайте список как вам нужно. Но это не самый хороший вариант решения задачи.
Если приведете пример текста (хотя бы одну строку) который надо обработать, то тогда можно найти более "красивый" вариант решения.
Консультировал: -OC- (Специалист)
Дата отправки: 21.01.2007, 16:35
Помимо уже упомянутого в ответах split можно использовать unpack (и pack для обратной операции) Примерно как в приложении, хотя с описанием формата я могу и ошибиться - нечасто его использую
Ещё можно использовать s//
Приложение:
Консультировал: Хватов Сергей (Академик)
Дата отправки: 21.01.2007, 16:50
Здравствуйте, Torsten!
Одна из самых сильных сторон Perl это регулярные выражения
Смотри приложение и поставляемую с перлом справку - там всё разжовано
Приложение:
Консультировал: Duke
Дата отправки: 22.01.2007, 08:38
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!