
JavaScript::V8 - Perl interface to the V8 JavaScript engine

use JavaScript::V8;
my $context = JavaScript::V8::Context->new();
$context->bind_function(write => sub { print @_ });
$context->eval(q/
for (i = 99; i > 0; i--) {
write(i + " bottle(s) of beer on the wall, " + i + " bottle(s) of beer\n");
write("Take 1 down, pass it around, ");
if (i > 1) {
write((i - 1) + " bottle(s) of beer on the wall.");
}
else {
write("No more bottles of beer on the wall!");
}
}
/);

See V8 issue 413 if you are having trouble on gcc 4.4.1.
svn checkout http://v8.googlecode.com/svn/trunk/ v8 cd v8 scons library=shared sudo mv include/v8.h /usr/local/include/ sudo mv libv8.so /usr/local/lib/
If you're using a 64-bit architecture, you need to include arch=x64 when running scons:
scons library=shared arch=x64
Otherwise, perl will complain when trying to link/load v8. For more information, see V8 issue 330.
On OS X I've successfully used Homebrew, install Homebrew then:
brew install v8
On Ubuntu 10.04 (and possibly Debian), the library and header files can be installed by running:
sudo aptitude install libv8-2.0.3 libv8-dev
Similar packages may be available for other distributions (adjust the package names accordingly).

Details on the context object and the mapping between JavaScript and Perl types.

The source code lives at http://github.com/dgl/javascript-v8.

Pawel Murias <pawelmurias at gmail dot com> David Leadbeater <dgl@dgl.cx> Paul Driver <frodwith at gmail dot com> Igor Zaytsev <igor.zaytsev@gmail.com>

Copyright (c) 2009-2010 Paweł Murias Copyright (c) 2011 David Leadbeater Copyright (c) 2011 Igor Zaytsev
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

I stole and adapted pieces of docs and API design from JavaScript.pm
For salvaging the code of V8.pm from a message board (which I took some code and the idea from)