perl oneliner에서 match expression을 파일에서 읽어오기
글쓴이: qiiiiiiiip / 작성시간: 일, 2012/02/05 - 1:39오전
펄을 아래와 같이 실행시킬때,
매치 패턴을 파일로 부터 읽어오는 방법이 있을까요?
( sed의 -f 옵션처럼 )
perl -pe 's/foo/bar/' file
perl -pe 's/abc/ABC/' file
을 하고 싶으면
script file에
s/foo/bar
s/abc/ABC
등을 모아서 적어두고,
perl --from-file scriptfile file
이런식으로 실행하는것이 가능할까요?
Forums:
이런식으로..
pattern.cfg
replace.pl
별도로 스크립트를 만드는것 말고 perl자체에서
별도로 스크립트를 만드는것 말고
perl자체에서 native하게 지원하는 방법은 없을까요?
--
그리고 추가로, 's/from/to/flag' 에서
python reg exp의 re.UNICODE 옵션에 대응하는 flag가 있는지요?
흠
>별도로 스크립트를 만드는것 말고
>perl자체에서 native하게 지원하는 방법은 없을까요?
sed 의 -f 옵션같은걸 말하신다면 없습니다.
http://www.nntp.perl.org/group/perl.beginners/2008/09/msg103320.html 에 누가 비슷한 질문을 올렸네요.
>그리고 추가로, 's/from/to/flag' 에서
>python reg exp의 re.UNICODE 옵션에 대응하는 flag가 있는지요?
Perl에서는 Perl내부 유니코드 인코딩으로 저장된 문자라면 별도의 UNICODE옵션 같은게
필요없이 문자열처리 및 정규식에서 기본으로 유니코드로 처리됩니다.
http://cafe.naver.com/perlstudy/697
http://cafe.naver.com/perlstudy/698
http://cafe.naver.com/perlstudy/699
Perl 스크립트언어와 기타 언어들을 다 포함해서 유니코드 지원이 가장 완벽한 언어입니다.
* Unicode Support Shootout The Good, the Bad, & the (mostly) Ugly
http://98.245.80.27/tcpc/OSCON2011/gbu.pdf
알려주신 링크가 큰 도움이 되었습니다. 정확히 그것과
알려주신 링크가 큰 도움이 되었습니다.
정확히 그것과 똑같은 일을 하고 싶었는데요..
while ( <> ){
s,from1/to1/flag1;
s,from2/to2/flag2;
print
}
라고 scriptfile을 쓰고 perl scriptfile input.txt 라고 실행하면 되겠네요..
그런데 re.UNICODE옵션도 그냥 u로 하니까 잘되네요...
( 참고로 re.UNICODE옵션은 인코딩옵션은 아니고,
한글등으 unicode character를 \w ( alphanumeric char. )에 포함시킬지
말지의 flag입니다.. )
--
그런데 아래 라인의 의미는 무엇인가요? 꼭 필요한 라인인가요?
use warnings;
use strict;
$^I = '';
$^I 는
$^I Value of the -i (inplace edit) switch.
의 의미입니다.
커멘드라인에서 -i 옵션을 준 효과를 내기 위함이죠.
따로 백업을 남길려면
$^I = '.bak';
처럼 하면 될 것 같네요.
댓글 달기