Lvalue substr - замена части строки
Есть несколько странных функций в Perl, которые могут принимать значения слева. Например, если вы хотите изменить содержимое строки, то можете использовать substr с 4-мя параметрами, где четвертый параметр это строка для замены, или можете использовать substr как левостороннюю функцию (lvalue) и присвоить ей значение.
substr $text, 14, 7, "jumped from";
and
substr($text, 14, 7) = "jumped from";
эти два выражения эквивалентны.
Несколько примеров:
substr с 4-мя параметрами
use strict; use warnings; use 5.010; my $text = "The black cat climbed the green tree."; substr $text, 14, 7, "jumped from"; say $text;
substr с 3-мя параметрами как Lvalue
use strict; use warnings; use 5.010; my $text = "The black cat climbed the green tree."; substr($text, 14, 7) = "jumped from"; say $text;
Обе эти программы выведут:
The black cat jumped from the green tree.
Какое же выражение использовать?
Я думаю, что 4-х параметровый вариант более понятен. Если вы хотите убедиться, что никто из вашей команды не использует Lvalue-вариант substr, то используйте Perl::Critic с включенным правилом ProhibitLvalueSubstr.
Published on 2014-03-21
If you have any comments or questions, feel free to post them on the source of this page in GitHub. Source on GitHub.
Comment on this post