Javascript 를 perl에서 mini-language 로 사용하기

12
Javascript as Mini-lang on Perl 김김김 @ 김김김김

Transcript of Javascript 를 perl에서 mini-language 로 사용하기

Page 1: Javascript 를 perl에서 mini-language 로 사용하기

Javascript as Mini-lang on Perl

김현승 @ 펄마니아

Page 2: Javascript 를 perl에서 mini-language 로 사용하기

JavaScript

• ECMA Script

• Web 이 성행하면서 자리를 확고히 함

• AJAX 로 진화하면서 개발패러다임을 변화

• 익숙한 문법의 약형언어

• 인력 수급이 매우 쉽다

Page 3: Javascript 를 perl에서 mini-language 로 사용하기

Perl 개발자의 고민

• 유지보수인력 확보 어려움

• 사용자의 참여를 끌어들일때의 어려움– 보안 문제– 학습 문제

Page 4: Javascript 를 perl에서 mini-language 로 사용하기

Perl 과 JavaScript 의 만남

• Perl 로 핵심기능을 구현하고 ,

• JavaScript 로 흐름을 제어한다 .

Page 5: Javascript 를 perl에서 mini-language 로 사용하기

Perl 과 JavaScript 의 만남

• Perl 로 핵심기능을 구현하고 ,빨리 만들고 ,

• JavaScript 로 흐름을 제어한다 .누구나 사용한다 .

Page 6: Javascript 를 perl에서 mini-language 로 사용하기

Spider Monkey

• FireFox 에 사용되는 JavaScript Engine

• Math, Array 같은 것은 있다 .

• Document, Event 같은 것은 없다 .

Page 7: Javascript 를 perl에서 mini-language 로 사용하기

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”)

Page 8: Javascript 를 perl에서 mini-language 로 사용하기

#1. 바인딩할 함수의 정의

#!/usr/bin/perl

use JavaScript::SpiderMonkey;

# perl 로 함수 구현 .sub hello_perl # hello perl 을 리턴하는 함수{

return 'Hello Perl';}

sub _print # 쉘에 글자 출력하는 함수 . JS의 유일한 외부통로가 될것임{

print @_;}

Page 9: Javascript 를 perl에서 mini-language 로 사용하기

#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 );

Page 10: Javascript 를 perl에서 mini-language 로 사용하기

#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 );

Page 11: Javascript 를 perl에서 mini-language 로 사용하기

#4. 실행[ 실행결과 ]$ perl sample.plHello Perl in JavaScript world!!$

Page 12: Javascript 를 perl에서 mini-language 로 사용하기

Mini-Lang 으로써의 가능성• JavaScript 는 진입장벽이 높지 않다 .

• JavaScript 는 삼각함수 , 정규표현식등을 사용할 수 있는 풍부한 Core 를 가지고 있다 .

• 외부와 단절되어 안전하다 .

• 그래서핵심코어와 비지니스로직을 분리하여 , 항상 내가 나설 필요가 없다 .