Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Perl] UriEncode/UriDecode 스크립트 Computer & Program

간혹 Uri Encoding 이나 Decoding 이 필요할 때를 대비해서 만들어둔 스크립트이다. perl을 사용하면 라이브러리가 있고, 왠만한 시스템에 perl은 기본으로 설치 되어 있어서 유용하게 쓰는 중이다.


encode.pl
#!/usr/bin/perl

use URI::Escape;

while(<>)
{
  $line = $_;
  print uri_escape(substr $line, 0, length($line)-1);
  print "\n";
}


decode.pl
#!/usr/bin/perl

use URI::Escape;

while(<>)
{
  $line = $_;
  print uri_unescape(substr $line, 0, length($line)-1);
  print "\n";
}


사용 방법은..

$ cat encoded
%ED%95%9C%EA%B8%80%20%ED%85%8C%EC%8A%A4%ED%8A%B8
english%20test
$ cat encoded | perl decode.pl
한글 테스트
english test
$ chmod +x decode.pl
$ cat encoded | ./decode.pl
한글 테스트
english test


$ cat decoded
한글 테스트
english test
$ cat decoded | perl encode.pl
%ED%95%9C%EA%B8%80%20%ED%85%8C%EC%8A%A4%ED%8A%B8
english%20test
$ chmod +x encode.pl
$ cat decoded | ./encode.pl
%ED%95%9C%EA%B8%80%20%ED%85%8C%EC%8A%A4%ED%8A%B8
english%20test


혹은 쉘 스크립트 등 다른 스크립트 내에서 perl 명령을 그대로 사용할 수도 있다. 아래는 쉘 스크립트 안에서 사용한 예이다. 스크립트 내부에서 Uri Encoding이 필요해서 "query"라는 파일을 읽어서 "encoded_query"로 저장하는 내용이다. 위의 perl 스크립트와 동작은 비슷하며, -M 옵션으로 모듈을 로딩하고, -e 옵션으로 실행할 스크립트 내용을 넣어줬다.

#!/bin/sh

...

perl -MURI::Escape -e 'open(FP, "query");while($line = <FP>){print uri_escape(substr $line, 0, length($line)-1); print "\n";}' > encoded_query

...

덧글

댓글 입력 영역

Google AdSense (text/image)