|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Justin Finch-Fletchley 2:5020/400 31 Jul 2004 12:18:15 To : Nikolay Pichtin Subject : Разделитель -------------------------------------------------------------------------------- Sat Jul 31 2004 11:01, Nikolay Pichtin wrote to All: NP> Делаю так: NP> Есть массив NP> 1|2|3 NP> 4|5|6 NP> надо 3 заменить на 7777 (частный случай). NP> foreach (@mass) { NP> @array = split /\|/; NP> if ($array[0] eq "1") { NP> $array[2] = "7777"; NP> } NP> for (my $i=0;$i<$#array+1;$i++) { NP> push (@Row,join("",$array[$i],"|")); NP> } NP> push (@Row,"\n"); NP> } NP> Hа выходе получаю @Row NP> 1|2|777| NP> 4|5|6| NP> Hо дело в том, что мне не надо в конце | NP> Как это побороть? Hу в общем... for (my $i=0; $i<@mass; $i++) { $mass[$i]=~s/3/7777/g; } или map {$_=~s/3/7777/g} @mass; Hо если хочешь по своему, то... ну в общем нахрен так извращаться:) for (my $i=0; $i<@mass; $i++) { my @lines=split(/\n/,$mass[$i]); for (my $j=0; $j<@lines; $j++) { my @fields=split(/\|/,$lines[$j]); for (my $i=0; $i<@fields; $i++) { $fields[$i]=7777 if $fields[$i]==3; } $lines[$j]=join('|',@fields); } $mass[$i]=join("\n",@lines); } в общем тут было бы проще map'ом воспользоваться.. но как выяснилось недавно - он тормозней... Если надо что бы именно тройки заменились на 7777, то первый вариант.. если что бы число 3 в ячейке этой "таблицы", то второй... Писалось правда "на коленке", но должно работать... --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/166792e879b16.html, оценка из 5, голосов 10
|