LINUX.ORG.RU

вопрос по перл: присваивание substr


0

0

нужно срочно выучить перл.. Шелл использовать не могу из-за производительности..

Я не понимаю внутренней логики того как работает:

substr($string,9,2) = 'some_string'

Что именно возвращает substr, что оно работает как ожидается??

★★★★★

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

а как получается что можно присвоить строку длины отличной от исходной?

Если написать

substr(substr($string,9,3),1,1)="some_sting"

это тоже сработает?

dilmah ★★★★★
() автор топика

> substr($string,9,2) = 'some_string'

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

А тут функции сабстринг присваивается значение 'some_string' вне зависимости от того, что было сделано со строкой $string

vilfred ☆☆
()

> Я не понимаю внутренней логики того как работает:

то что ты написал ваще не должно работать. Как бы обычно результат функции присваивается переменной. А ты переменную $_ присваиваешь функции, которая еще чето делает еще и с переменной $string, неизвестно откуда взявшейся...

vilfred ☆☆
()
Ответ на: комментарий от dilmah

зырь сюды: http://www.perl.find-info.ru/perl/014/substr.htm

Хотя там тоже ботва какая-то с substr(blabla)='some_text'; это чето новенько для меня, никогда не знал, что можно так писать:

program($AAAA)='qwerty';

особливо если program возвращает текст. короче это чето новенькое.

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

Блин, ребят, ну неужели так трудно заглянуть в perldoc по моей наводке? :) А то флейму развели...

В конструкции "$a = 1 + 3;" то, что стоит слева от знака равенства, называется "правильным левым значением" (left value -- lvalue). Грубо говоря, это ячейка в памяти, куда можно записать новое значение. Так вот, процедуры тоже могут возвращать это lvalue -- смотри perldoc perlsub, раздел "Lvalue subroutines"

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