Perl에 있는 몇몇 함수는 신기하게도 할당문의 좌변에 올 수 있습니다.
예를 들어 어떤 문자열의 내용을 변경하고 싶을 때 여러분은
substr에 매개변수 4개를 주어
실행할 수 있고 이 때 네번째 매개변수가 치환할 문자열이 됩니다.
또는 여러분은 substr
을 L밸류로 사용하고 치환할 문자열을 매개변수 3개짜리 형태의
substr에 할당할 수 있습니다.
substr $text, 14, 7, "jumped from";
이것과
substr($text, 14, 7) = "jumped from";
이것은 $text
를 동일하게 변경합니다.
다음 예제를 해봅시다:
매개변수가 4개인 substr
use strict;
use warnings;
use 5.010;
my $text = "The black cat climbed the green tree.";
substr $text, 14, 7, "jumped from";
say $text;
매개변수가 3개인 substr을 L밸류로 사용
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개짜리 형태가 더 명확하다고 생각합니다. 여러분의 팀원이 L밸류 형태의 substr을 쓰지 못하도록 강제하고 싶다면 Perl::Critic 모듈을 사용할 수 있습니다. ProhibitLvalueSubstr 정책을 켰는지 확인하세요.