|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alan Long 2:5030/1082.72 15 Sep 2002 11:59:20 To : Sergey Juchkov Subject : подсобите -------------------------------------------------------------------------------- * Originally from Sergey Juchkov (2:454/10) to All. SJ> всем ответившим спасибо. но попутно возникло следующее SJ> есть SJ> $str = '/часть 6/часть 5/часть 4/часть 3/часть 2/часть 1/'; SJ> или SJ> $str = '/часть 6/часть 5/часть 4/часть 3/часть 2/часть 1'; SJ> надо получить в массив ch SJ> $ch[1] <- часть 1 SJ> $ch[2] <- часть 2 SJ> $ch[3] <- часть 3 SJ> $ch[4] <- часть 4 SJ> и т.д. SJ> частей может быть от 2 до X $str =~ s/^\///; $str =~ s/\/$//; @ch = reverse split( /\//, "$str/" ); в @ch получаем требуемое. То есть для стороки: $str = 'ccc/bbb/aaa'; мы получим массив: @ch = (undef, 'aaa', 'bbb', 'ccc'); Hо условия задачи несколько не ясны, так что решением может быть: foreach ( split(/\//, $str) ) { if( /\s(\d+)$/ ) { $ch[$1] = $_; } } Тут для строки: $str = 'bbb 2/ccc 3/ddd 4/aaa 1'; получаем: @ch = (undef,'aaa 1','bbb 2','ccc 3','ddd 4'); В дальнейшем объясни по каким критериям нужно разбирать строки на массивы. Так как в данном примере это можно сделать двояко, или хотя-бы приводи данные на которых не приходится ломать голову разбираясь что-же ты хотел. P.S. Hаписанно прямо в почтовом редакторе, и не проверялось в реальной жизни, так что может содержать синтаксические ошибки. SJ> WBR, Sergey. -- With best, Ъ-· Ъ Е-ЧLaі\і <alan@x-rays.eu.org> --- timEd/386 1.10+ * Origin: X - Rays Station (2:5030/1082.72) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/4581d8441430.html, оценка из 5, голосов 10
|