[완료]perl 정규식 하나더 질문 드리겠습니다.

itexpert의 이미지

아래 답변 덕분에 1차문제는 해결했습니다.
감사합니다.

my $s = join "", <>; #변수에 텍스트파일 내용을 몽땅 집어 넣는다

---텍스트파일 내용---------
OK AAA DDD BBB
START DEFG AAA BBB CCC DDD END
ZZZ YYYY MMMM

---결과----------
OK AAA DDD BBB
ZZZ YYYY MMMM

이처럼...START로 시작하고 END로 끝나는 문자열들을 삭제 하고 싶습니다...

제가 한 방법은 $s =~ /START(.*)END/ 로 했는데요..
결과가
DEFG AAA BBB CCC DDD
이렇게 나와 버리네요...

어떻게 해야할지, 도움을 주시면 감사하겠습니다...

이상 perl 초보였습니다..

aero의 이미지

#!/usr/bin/env perl
use strict;
use warnings;
 
my $s="OK AAA DDD BBB\nSTART DEFG AAA BBB CCC\nDDD END ZZZ\nYYYY MMMM";
print "===BEFORE===\n$s\n\n";
$s =~ s/(START.*?END)//sgm;
print "===AFTER===\n$s\n";

정규표현식 뒤에 sgm 이라고 붙은 modifier중 g는 해당 문자열이
여러번 나올경우 loop를 돌려 처리할 경우가 아니라면 빼도 됩니다.

결과

===BEFORE===
OK AAA DDD BBB
START DEFG AAA BBB CCC
DDD END ZZZ
YYYY MMMM
 
===AFTER===
OK AAA DDD BBB
 ZZZ
YYYY MMMM
itexpert의 이미지

아..한방에 다 해결되버렸습니다. ^^

정말 감사드립니다...

오늘하루도 행복한 하루 보내세요....