Javascript 를 perl에서 mini-language 로 사용하기
-
Upload
hyunseung-kim -
Category
Technology
-
view
458 -
download
4
Transcript of Javascript 를 perl에서 mini-language 로 사용하기
Javascript as Mini-lang on Perl
김현승 @ 펄마니아
JavaScript
• ECMA Script
• Web 이 성행하면서 자리를 확고히 함
• AJAX 로 진화하면서 개발패러다임을 변화
• 익숙한 문법의 약형언어
• 인력 수급이 매우 쉽다
Perl 개발자의 고민
• 유지보수인력 확보 어려움
• 사용자의 참여를 끌어들일때의 어려움– 보안 문제– 학습 문제
Perl 과 JavaScript 의 만남
• Perl 로 핵심기능을 구현하고 ,
• JavaScript 로 흐름을 제어한다 .
Perl 과 JavaScript 의 만남
• Perl 로 핵심기능을 구현하고 ,빨리 만들고 ,
• JavaScript 로 흐름을 제어한다 .누구나 사용한다 .
Spider Monkey
• FireFox 에 사용되는 JavaScript Engine
• Math, Array 같은 것은 있다 .
• Document, Event 같은 것은 없다 .
Real World
구조Perl World
JavaScript World
sub get_hello_string()
Print()
.GetHelloString()
BIND
“PerlObject”
shell sub print() BINDJavaScri
ptCODE
PerlObjectMAKE
JavaScript::SpiderMonkey::eval(“JavaScript CODE”)
#1. 바인딩할 함수의 정의
#!/usr/bin/perl
use JavaScript::SpiderMonkey;
# perl 로 함수 구현 .sub hello_perl # hello perl 을 리턴하는 함수{
return 'Hello Perl';}
sub _print # 쉘에 글자 출력하는 함수 . JS의 유일한 외부통로가 될것임{
print @_;}
#2. JS 객체 생성 및 바인딩
my $js = JavaScript::SpiderMonkey->new();$js->init();
# JavaScript 환경에 PerlObject 를 생성한다 .my $obj = $js->object_by_path( "PerlObject“ );
# PerlObject 에 hello_perl 함수를 HelloPerl() 로 바인딩한다 .$js->function_set( "HelloPerl" , \&hello_perl , $obj);
# inline 으로 Print 함수를 선언한다 .$js->function_set( "Print" , \&_print );
#3. 자바스크립트 eval
# 자바스크립트 작성 $JS = <<END_OF_JS;
// here is JavaScript world
var hello = PerlObject.HelloPerl(); // perl 의 scalar 를 그대로 받는다 .
hello = hello + " in JavaScript world!!\\n"; // scalar 를 가공하고
Print(hello); // 외부세계로 보낸다 .
END_OF_JS
# 자바스크립트로 제어 시작$js->eval( $JS );
#4. 실행[ 실행결과 ]$ perl sample.plHello Perl in JavaScript world!!$
Mini-Lang 으로써의 가능성• JavaScript 는 진입장벽이 높지 않다 .
• JavaScript 는 삼각함수 , 정규표현식등을 사용할 수 있는 풍부한 Core 를 가지고 있다 .
• 외부와 단절되어 안전하다 .
• 그래서핵심코어와 비지니스로직을 분리하여 , 항상 내가 나설 필요가 없다 .