this 질문에 대한 응답을 시도하는 동안 Perl의 정규식 엔진에서 이상한 동작이 발생했습니다. 정규식과 일치시키려는 2 개의 수량을 포함하는 문자열이 있습니다. 정규식은 "units/ml"문자열 앞의 8 문자와 일치합니다. 나는 두 부대를 모두 잡고 싶다.왜 동일한 정규 표현식을 두 번 실행하면 결과가 달라 집니까?
use warnings;
use strict;
my $line = 'some data 100,000 units/ml data 20,000 units/ml data';
my @array;
if ($line =~ m/.{8}units\/ml/g) {
@array = $line =~ m/.{8}units\/ml/g;
print join(' ', @array) . "\n";
}
출력 : 내가 두 번 라인 6을 실행하면
20,000 units/ml
이 할당 라인이 @array하기 :
는이 스크립트는 일치 2를 인쇄
use warnings;
use strict;
my $line = 'some data 100,000 units/ml data 20,000 units/ml data';
my @array;
if ($line =~ m/.{8}units\/ml/g) {
@array = $line =~ m/.{8}units\/ml/g;
# Let's run that again, for good measure...
@array = $line =~ m/.{8}units\/ml/g;
print join(' ', @array) . "\n";
}
출력 :
100,000 units/ml 20,000 units/ml
왜이 두 스크립트가 다른 결과를 산출합니까?
네, 내가 할 줄 것과 아주 가까이처럼 뭔가를 작성해야합니다. 그러나 if 문에 my를 넣을 수 있습니다.'if (my @array = ...) {여기에서 유효한 @array는 유효하지만 여기가 없습니다.} – Tanktalus
@Tanktalus - 실제로, 여러분도 할 수 있습니다. +1 – Kenosis