WebMake
WebMake Documentation (version 2.4)

The <{perl}> Directives

Arbitrary perl code can be executed using this directive.

It works like perl's eval command; the return value from the perl block is inserted into the file, so a perl code block like this:

	<{perl
	  $_ = '';
	  for my $fruit (qw(apples oranges pears)) {
	    $_ .= " ".$fruit;
	  }
	  $_;
	}>

will be replaced with the string " apples oranges pears". Note that the $_ variable is declared as local when you enter the perl block, you don't have to do this yourself.

If you don't like the eval style, you can use a more PHP/JSP/ASP-like construct using the perlout directive, which replaces the perl code text with anything that the perl code prints on the default output filehandle, like so:

	<{perlout
	  for my $fruit (qw(apples oranges pears)) {
	    print " ", $fruit;
	  }
	}>

Note that this is not STDOUT, it's a local filehandle called $outhandle. It is selected as the default output handle, however, so just print without a filehandle name will work.

Also, it should be noted that perl is a little more efficient than perlout, so if you're going all-out for speed, you should use that.

<{perl}> sections found at the top level of the WebMake file will be evaluated during the file-parsing pass, as they are found.

<{perl}> sections embedded inside content chunks or other tagged blocks will be evaluated only once they are referenced.

Perl code can access content variables and URLs using the library functions provided.

The library functions are available both as normal perl functions in the default main package, or, if you want to write thread-safe or mod_perl-safe perl code, as methods on the $self object. The $self object is available as a local variable in the perl code block.

A good example of perl use inside a WebMake file can be found in the news_site.wmk file in the examples directory.

WebMake Documentation (version 2.4)
Built With WebMake