Консультация № 71939
21.01.2007, 16:08
0.00 руб.
0 3 3
Никак не пойму, как обрабатывать символы в строке.
Предположим есть:
$str = "hello, perl";
Как в цикле пробежатся по всем символам и сделать с ними что-нибудь ?
Я естествено попробовал тыкнуть пальцем в небо и написал так: $str[2] - естественно perl лишь ответил молчанием, не Си все таки.
Конкретно решаю такую задачу. Есть текст, в нем данные разбиты в группы по 3 байта, первые два байты мне нужно обработать особым образом, 3-ий вообще не нужен.
Собственно это все мелочи, которые решаются ручками в течении нескольких минут, я не пойму как обращаться к отдельным символам в строке.

Обсуждение

Неизвестный
21.01.2007, 16:35
общий
это ответ
Здравствуйте, Torsten!
Обрабатывать строку посимвольно можно обработав ее ф-цией split с пустым шаблоном. Т.е. @str = split(//,$str); вернет вам список из отдельных символов строки, а дальше уже обрабатывайте список как вам нужно. Но это не самый хороший вариант решения задачи.
Если приведете пример текста (хотя бы одну строку) который надо обработать, то тогда можно найти более "красивый" вариант решения.
давно
Академик
20764
1861
21.01.2007, 16:50
общий
это ответ
Здравствуйте, Torsten!

Помимо уже упомянутого в ответах split можно использовать unpack (и pack для обратной операции) Примерно как в приложении, хотя с описанием формата я могу и ошибиться - нечасто его использую

Ещё можно использовать s//

Приложение:
my ($b1, $b2, $b3, $rest) = unpack ‘bbba‘, $string;$string =~ s{^(.)(.).}{};my ($b1, $b2) = ($1, $2);
Неизвестный
22.01.2007, 08:38
общий
это ответ
Здравствуйте, Torsten!
Одна из самых сильных сторон Perl это регулярные выражения
Смотри приложение и поставляемую с перлом справку - там всё разжовано

Приложение:
$str=‘hello, perl‘;$str=~/^/;while($‘=~/(.)/){print "$1\n"}
Форма ответа