Download

Download the bsfperl.jar from http://bsfperl.sourceforge.net and put it into the WEB-INF/lib directory of your webapp. If you want to rebuild your Cocoon you should copy it also to the lib/local directory of your Cocoon sources, otherwise the JAR will be lost after the build.

Add the "script" generator to your sitemap and register the BSFPerl engine with BSF

<map:generators>
  ...
  <map:generator name="script"
      src="org.apache.cocoon.generation.ScriptGenerator">
    <add-languages>
      <language name="perl" src="net.sourceforge.bsfperl.PerlEngineImpl">
        <extension>pl</extension>
      </language>
    </add-languages>
  </map:generator>
</map:generators>

Add a match which calls the script generator to your sitemap

<map:match pattern="hello.pl">
  <map:generate src="hello.pl" type="script">
    <map:parameter name="userName" value="Perl Lover"/>
  </map:generate>
  <map:serialize type="xml"/>
</map:match>

Perl script (hello.pl)

use strict;

# 
# a bean scripting framework object, 
# $bsf, is provided to us by bsfperl.
# 

#get the output String buffer
my $bsf_output = $bsf->lookupBean("output");

#get the Parameters object
my $bsf_parameters = $bsf->lookupBean("parameters");

#get the value of the parameter "key" defined in the sitemap
my $username = $bsf_parameters->getParameter("userName");

#generate xml
$bsf_output->append("<xml>" . "Hello, " . $username . "!" . "</xml>");

(tested with 2.1.8)

See Also

*PythonScriptGenerator
*ScriptGenerator in Cocoon 2.1

  • No labels