2010-02-08 1 views
2

.펄 - 모든 인스턴스를 검색 아직 대체하는 정규 표현식을 사용하는 경우에만 심지어 동일한 경우, 모든 인스턴스를 검색하고 개별적으로 모두 교체하고 싶은 첫번째

#!/usr/bin/perl 
use strict; 
use warnings; 

my %dataThing; 
my $x=0; 
my $data = "1 - 2 - 2 - 4 - 7 - 343 - 3 - 1"; 
if(my @dataArray = ($data =~ m/([0-9]+)/gis)){ 
    foreach(@dataArray) { 
     my $replace = "[thing-" . $x . "]"; 
     # somehow replace $_ with above 
     ... 
     # add to an array to store later 
     $dataThing{$replace} = $_; 
     $x++; 
    } 
} 

출력은 다음과 같습니다.

[thing-1] - [thing-2] - [thing-3] - [thing-4] - [thing-5] - [thing-6] - [thing-7] - [thing-8] 

하지

[thing-1] - [thing-2] - [thing-2] - [thing-3] - [thing-4] - [thing-5] - [thing-6] - [thing-1] 

이 어레이를 통해 반복하고 1

답변

3

참고로 "E"개질제를 사용하여 설정 기능 한도 않는 str_replace를 사용하여 PHP에서 가능한 것 대체 연산자는 대체면의 임의 코드를 평가합니다. 이 코드는 호출 된 횟수를 셀 수 있으며 그 횟수를 반환합니다.

my $data = "1 - 2 - 2 - 4 - 7 - 343 - 3 - 1"; 

my $x=0; 
$data =~ s/([0-9]+)/"[thing-" . ++$x . "]"/ges; 
+0

감사합니다. "e"수정 자의 기능에 대해 간단히 설명 할 수 있습니까? –

+5

대체 연산자의 오른쪽에있는 코드는 본래의 Perl 표현식으로 평가되고 평가 결과는 단순히 보간 된 문자열이 아닌 대체 텍스트로 사용됨을 의미합니다. –

+1

감사합니다. 매우 유용합니다. –

관련 문제