정규식에서 이름을 추출하려고하지만 ~~ 변경할 수없는 컨테이너에 할당하려는 것 같습니다. 왜 그렇게? 나는 무엇을 잘못 했는가?왜 perl6 regex ~~ 불변 컨테이너에 할당하려고합니까?
my $test= ' "DOE , JOHN" ';
grammar findReplace {
regex TOP { \s* <ptName> \s* }
regex ptName { <aName> }
regex aName { \" .+? \" }
}
class rsAct {
method TOP ($/) { make "last name is: " ~ $<ptName>.made; }
method ptName ($/) {
my $nameStr = $/.Str;
if $nameStr ~~ m/ \" (<alpha>+) .* \, .* \"/{
my $lastName = $/[0]; # I want $/[0] sub-string of outer $/
make $lastName;
}
}
}
my $m = findReplace.parse($test, actions => rsAct.new);
say $m.made;
과 내가 가진 오류이 있었다 : 나는 패턴과 일치하는 외부 $의 /의 하위 문자열을 얻기 위해 노력하고
Cannot assign to a readonly variable or a value
in method ptName at shit.pl line 13
in regex ptName at shit.pl line 5
in regex TOP at shit.pl line 4
in block <unit> at shit.pl line 20
; 왜 ~ ~ 과제가 될까?
도움 주셔서 감사합니다.
대부분의 경우'token'이나'rule'을 사용해야합니다.'regex'가 아닙니다. –