LINUX.ORG.RU

Perl. Найти элемент массива и заменить его значение.

 ,


0

3

Всем привет!

Я новичок в перле. Встала задача найти первый найденных элемент в массиве, соответствующий некоторому значению и заменить значение этого элемента.

Для простоты задачи, взьмем массив:

my @my_arr = ("test1", "test2", "test3", "test2", "test5", "test2", "test6");

Нужно найти в массиве @ma_arr первый элемент со значением test2 и заменить его значение на «best2». Як лучше всего на ваш взгдя такое проделать? И если можно, то маленький пример в студию).

Заранее спасибо.


Ответ на: комментарий от reprimand

Тебе того же искрене желаю, в раздел о правилах пунктуации.

newquestion
()
Ответ на: комментарий от reprimand

Кстати, даже тут ты умудрился обосраться, грамотей

Щёки у мадемуазель Жорж белые от пудры, и ничего незаметно. Но уши загорелись, и красные пятна на плечах, на шее. Е. И. Замятин, «Детская», 1920 г. (цитата из Национального корпуса русского языка

https://ru.wiktionary.org/wiki/незаметно

newquestion
()
Ответ на: комментарий от reprimand

Perl. Найти элемент массива и заменить его значение. (комментарий)

Вот, учись, сынок, как люди пишут на перле. Я то на нем не пишу, есличо, вообще не знаю. И не забудь сказать, что я есличо неправильно написал. слитно, с ошибками, etc

newquestion
()
Ответ на: комментарий от newquestion

Кстати, даже тут ты умудрился обосраться, грамотей

ты даже не в состоянии понять, что я не имел ввиду твою речь
едрить_ты_простофиля.жпг

reprimand ★★★★★
()
Ответ на: комментарий от newquestion

Вот

можешь себе в задницу засунуть этот никому ненужный кусок

Я то на нем не пишу, есличо, вообще не знаю

а, так ты еще и делитель на ноль. Я бы мог тебе объяснить почему «кусок» и почему ты не прав, но ты же сейчас начнёшь кукарекать

reprimand ★★★★★
()
Последнее исправление: reprimand (всего исправлений: 1)
Ответ на: комментарий от reprimand

Да, ты сейчас начнешь строить глобальную теорию вселенского идеального кода, мне это не интересно. А суть в том,что что в контексте задачи именно такие куски и ожидаются, простые и лаконичные, в которые ты не умеешь.

можешь себе в задницу засунуть этот никому ненужный кусок

как раз для тебя хорошо подойдет в качестве анестезии.

newquestion
()
Ответ на: комментарий от reprimand

$" (the list separator) - по умолчанию пробел. Он действует, когда мы интерполируем массив в строку $s. В получившейся строке меняем test2 на best2 до первого вхождения. Затем, переопределяем массив: разделяем строку пробелами, и возвращаем этот массив в @a.

Все просто, на самом деле. Не знал что ты новичок в perl.

Deleted
()

Io

еще один годный вариант на ё try(l atPut(l indexOf("test2"), "best2"))

newquestion
()
Ответ на: комментарий от newquestion

осуждает код

код не пострадает от этого))

Deleted
()

Две страницы и ни одного правильного ответа. Держи:

perl -wE 'my @my_arr = ("test1", "test2", "test3", "test2", "test5", "test2", "test6");for(@my_arr){$_ eq "test2"||next;$_="best2";last};map {say} @my_arr'

disarmer ★★★
()
Ответ на: комментарий от gh0stwizard

Ну да, та же суть с другим синтаксисом. Главное что не regex replace без \Q\E

disarmer ★★★
()
Ответ на: комментарий от newquestion

«Помогите Маше расставить лог связи»

1)

повелосипедить
в словарь посмотри

2)

Вот, учись, сынок, как люди пишут на перле
фу завоняло как

курил утром?

reprimand ★★★★★
()
Ответ на: комментарий от pylin

Правильно, строй велосипеды и провоцируй баги в стиле «а на моей ОС и машине все работает!»

какие нахрен велосипеды и баги? чё за чушь ты порешь?

reprimand ★★★★★
()
Ответ на: комментарий от newquestion

Да, ты сейчас начнешь строить глобальную теорию вселенского идеального кода, мне это не интересно.

ты сейчас начинаешь шланговать, а если тебе не интересно - просто не пиши, всё просто

А суть в том,что что в контексте задачи именно такие куски и ожидаются, простые и лаконичные, в которые ты не умеешь.

тебя смешают с говном на ревью за куски кода, которые потом невозможно прочитать, отдебажить, затем сопровождать в течении нескольких лет

а, я же забыл что ты js-макака. Тогда сори, вопросов нет

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

похоже на задачу на собеседовании «найдите две ошибки»...

arto ★★
()
Ответ на: комментарий от arto

5.14 вышел в марте 2013. Для личных нужд я использую фичи <= 5.18, т.к. вкусно и есть в любом актуальном дистре. Но решил что стоит упомянуть, ради мхом покрытого продакшена, где модули начинают писать с «use 5.006» :)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от reprimand

4) Не стоит использовать сторонние модули в простых задачах, даже если они есть в стандартной комплектации

«Простая задача», имхо, размытый термин. Согласен, например потому, что подключать модуль - это расходы. А если еще и устанавливать - так вдвойне. А если тянет зависимости - так вообще. Решение простых задачек (копипаст или написание каждый раз заново) забирает время. Как и сложных (поиск готового модуля, или своё решение), в общем-то.

Так вот, бывает случаи, когда расходы из за потраченного времени/усилия/внимания на решение простых задачек, не стоят расходов на подключение модуля из стандартной комплектации.

5) Всегда пользуйся use strict; use warnings;

Или добавить «-w» к #!perl. Понятно, и меньше клацать))

Deleted
()
Ответ на: комментарий от Debasher

Если ты, амёба, думаешь, что ты сможешь мне кукарекнуть что-то типа:

нет гарантии что во входных данных нет строки с ','
хардокод: 'test2' тоже должен подаваться из вне

И при этом я не смешаю тебя с дермищем - я тебя огорчу.

Днищескриптуха и школозадачки меня не интересуют - найдёшь хоть что-то достойное царя - кастуй.

TrueTsar1C78
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.