SlideShare uma empresa Scribd logo
1 de 54
Perl XS By  John Scoles The Pythian Group Black Art? Your Handy  Friend ? Misunderstood  Brain Sucking Zombie from Hell?
My XS Story! The funny thing is the Chinese use the same word for  catastrophe  as they use for  opportunity
In The Beginning ,[object Object],[object Object],[object Object],[object Object]
My 'C'  Background ,[object Object]
My XS Background at the time ,[object Object],Bart Simpson said it best when asked if he knew long division or multiplication
A Complete  ,[object Object],[object Object],[object Object],[object Object]
So as Johny Cash would say ,[object Object]
But? ,[object Object]
So I went Looking for Answers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Why Is This? ,[object Object],[object Object],[object Object],[object Object]
Lets go back to the start ,[object Object],[object Object],[object Object],[object Object]
A Few Things to know about 'C' ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A Few Things to say about Perl ,[object Object],[object Object],[object Object],[object Object],[object Object]
Stop, Look, Listen! ,[object Object],[object Object],[object Object],[object Object],[object Object]
How about DBI and DBD::Oracle ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Part the Second  ,[object Object],[object Object],[object Object],[object Object]
Data in 'C'  ,[object Object],[object Object],[object Object],[object Object],[object Object]
Struc  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Memory  in 'C' ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Libs in 'C' ,[object Object],[object Object],[object Object],[object Object]
Data in Perl ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Our first look of the “Guts” of Perl  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Memory in 'PERL' II ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Libs in 'Perl' ,[object Object]
How 'C' and 'Perl' Work ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Finally down to Brass Tacks ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Now Some Code ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How about a Perl File for it ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
So all we do is open the .xs file and add in our  includes  and function but not the main  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Now edit the Hi_ larry.pm ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How about the test file as well ,[object Object],[object Object],[object Object]
Now everyones fab  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
So what is going on? ,[object Object],[object Object],[object Object],[object Object]
Some more Black Majik ,[object Object],[object Object],[object Object]
Typemap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is in an .XS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Anatomy of an xs file ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MODULE, PACKAGE, PREFIX, come next ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MODULE = Apache  PACKAGE = Apache  PREFIX = mod_perl INCLUDE: Oracle.xsi We can name it  anything  we want as long as it is an xs file .xsi seems to be the norm PREFIX Does the opposite of what you would think Strips off the  prefix  from the 'XS' functions I. E. Apache.xs int mod_perl_sent_header(r, val=0) And in perl it is called as sent_header(r, val=0) Next!
Now your Xsub ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Some Examples ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Black Majik ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Evil Dark Majik with a -6 saving throw ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface Design ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How About Summing an Array ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
And our XS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More Black Majik ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Stack ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Just Plain Eval Majik ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The  explanation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How about embedding PERL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Where to go from here ,[object Object],[object Object],[object Object],[object Object]
? ,[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Airlover 20030324 1
Airlover 20030324 1Airlover 20030324 1
Airlover 20030324 1
Dr.Ravi
 
Talk Unix Shell Script
Talk Unix Shell ScriptTalk Unix Shell Script
Talk Unix Shell Script
Dr.Ravi
 

Mais procurados (20)

Hom Class
Hom ClassHom Class
Hom Class
 
Hom Class
Hom ClassHom Class
Hom Class
 
Python 3000
Python 3000Python 3000
Python 3000
 
Perl 5.10
Perl 5.10Perl 5.10
Perl 5.10
 
Php extensions
Php extensionsPhp extensions
Php extensions
 
Python Compiler Internals Presentation Slides
Python Compiler Internals Presentation SlidesPython Compiler Internals Presentation Slides
Python Compiler Internals Presentation Slides
 
Ruby For Java Programmers
Ruby For Java ProgrammersRuby For Java Programmers
Ruby For Java Programmers
 
Better rspec 進擊的 RSpec
Better rspec 進擊的 RSpecBetter rspec 進擊的 RSpec
Better rspec 進擊的 RSpec
 
Make Your Own Perl with Moops
Make Your Own Perl with MoopsMake Your Own Perl with Moops
Make Your Own Perl with Moops
 
The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)
 
Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
 
Create your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 VeronaCreate your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 Verona
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performances
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 
Airlover 20030324 1
Airlover 20030324 1Airlover 20030324 1
Airlover 20030324 1
 
A(n abridged) tour of the Rust compiler [PDX-Rust March 2014]
A(n abridged) tour of the Rust compiler [PDX-Rust March 2014]A(n abridged) tour of the Rust compiler [PDX-Rust March 2014]
A(n abridged) tour of the Rust compiler [PDX-Rust March 2014]
 
Building Custom PHP Extensions
Building Custom PHP ExtensionsBuilding Custom PHP Extensions
Building Custom PHP Extensions
 
Writing and using php streams and sockets
Writing and using php streams and socketsWriting and using php streams and sockets
Writing and using php streams and sockets
 
Talk Unix Shell Script
Talk Unix Shell ScriptTalk Unix Shell Script
Talk Unix Shell Script
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTS
 

Semelhante a Embed--Basic PERL XS

The Java Script Programming Language
The  Java Script  Programming  LanguageThe  Java Script  Programming  Language
The Java Script Programming Language
zone
 
Javascript by Yahoo
Javascript by YahooJavascript by Yahoo
Javascript by Yahoo
birbal
 
Jsonsaga
JsonsagaJsonsaga
Jsonsaga
nohmad
 
WTFin Perl
WTFin PerlWTFin Perl
WTFin Perl
lechupl
 
Advanced perl finer points ,pack&unpack,eval,files
Advanced perl   finer points ,pack&unpack,eval,filesAdvanced perl   finer points ,pack&unpack,eval,files
Advanced perl finer points ,pack&unpack,eval,files
Shankar D
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
Ramamohan Chokkam
 
Douglas Crockford Presentation Jsonsaga
Douglas Crockford Presentation JsonsagaDouglas Crockford Presentation Jsonsaga
Douglas Crockford Presentation Jsonsaga
Ajax Experience 2009
 

Semelhante a Embed--Basic PERL XS (20)

C to perl binding
C to perl bindingC to perl binding
C to perl binding
 
typemap in Perl/XS
typemap in Perl/XS  typemap in Perl/XS
typemap in Perl/XS
 
Perl Presentation
Perl PresentationPerl Presentation
Perl Presentation
 
Python - Getting to the Essence - Points.com - Dave Park
Python - Getting to the Essence - Points.com - Dave ParkPython - Getting to the Essence - Points.com - Dave Park
Python - Getting to the Essence - Points.com - Dave Park
 
What's new in Perl 5.10?
What's new in Perl 5.10?What's new in Perl 5.10?
What's new in Perl 5.10?
 
The Java Script Programming Language
The  Java Script  Programming  LanguageThe  Java Script  Programming  Language
The Java Script Programming Language
 
Javascript by Yahoo
Javascript by YahooJavascript by Yahoo
Javascript by Yahoo
 
The JavaScript Programming Language
The JavaScript Programming LanguageThe JavaScript Programming Language
The JavaScript Programming Language
 
Javascript
JavascriptJavascript
Javascript
 
Les origines de Javascript
Les origines de JavascriptLes origines de Javascript
Les origines de Javascript
 
Weird Plsql
Weird PlsqlWeird Plsql
Weird Plsql
 
Jsonsaga
JsonsagaJsonsaga
Jsonsaga
 
The JSON Saga
The JSON SagaThe JSON Saga
The JSON Saga
 
WTFin Perl
WTFin PerlWTFin Perl
WTFin Perl
 
Javascript
JavascriptJavascript
Javascript
 
Python scripting kick off
Python scripting kick offPython scripting kick off
Python scripting kick off
 
Advanced perl finer points ,pack&unpack,eval,files
Advanced perl   finer points ,pack&unpack,eval,filesAdvanced perl   finer points ,pack&unpack,eval,files
Advanced perl finer points ,pack&unpack,eval,files
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
 
Douglas Crockford Presentation Jsonsaga
Douglas Crockford Presentation JsonsagaDouglas Crockford Presentation Jsonsaga
Douglas Crockford Presentation Jsonsaga
 
A hands-on introduction to the ELF Object file format
A hands-on introduction to the ELF Object file formatA hands-on introduction to the ELF Object file format
A hands-on introduction to the ELF Object file format
 

Embed--Basic PERL XS

  • 1. Perl XS By John Scoles The Pythian Group Black Art? Your Handy Friend ? Misunderstood Brain Sucking Zombie from Hell?
  • 2. My XS Story! The funny thing is the Chinese use the same word for catastrophe as they use for opportunity
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. MODULE = Apache PACKAGE = Apache PREFIX = mod_perl INCLUDE: Oracle.xsi We can name it anything we want as long as it is an xs file .xsi seems to be the norm PREFIX Does the opposite of what you would think Strips off the prefix from the 'XS' functions I. E. Apache.xs int mod_perl_sent_header(r, val=0) And in perl it is called as sent_header(r, val=0) Next!
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.