Hi:

I found one way to get global subs in embperl.
This is not the best way to do it but it works. The best solution is that
embperl handle this.
The bad news with this way to get global subs is that you will need to
evaluate the same code if you need it in different files loaded, the good
news is that you will load your subs only once.

Note. If you test this files, be carefully when copy the text. When i tested
sending to my self i found it is better to write them again and not copy.

Sorry for the long text.

Carlos Kassab

################ file index.epl ################
[- $globalp = shift; -]
[- $optRawInput = 1 -]
[-
    $globalp->{globalsubs} = "";
    $mysubsfile =
substr($ENV{'PATH_TRANSLATED'},0,length($ENV{'PATH_TRANSLATED'})-10)."subs.epl";    
open(MYSUBS, $mysubsfile)
        while(<MYSUBS>)  {    $globalp->{globalsubs} =
$globalp->{globalsubs}.$_;   }
        close(MYSUBS);

    $globalp->{bgcolor1} = "#efefef";
    $globalp->{bgcolor2} = "#438fff";
    eval $globalp->{globalsubs};
-]

<html> <head><title> test </title></head><body>
[-
    local $escmode = 0;
    &OpenTable($globalp->{bgcolor1},$globalp->{bgcolor2});
    &mytitle("<big>My main title</big>");
    &CloseTable;
-]
<br> [- Execute ('somefile.epl') -] </body></html>



################ file subs.epl ################

sub mytitle {    my $title = shift; print OUT "$title"; }

sub myfooter {   $footertext  = shift;  print OUT "<u>$footertext</u>"; }

sub OpenTable
{
    $bgcolor1 = shift;   $bgcolor2 = shift;

    print OUT "<table width=\"100%\" border=\"0\" cellspacing=\"1\"
cellpadding=\"0\" bgcolor=\"$bgcolor2\"><tr><td>\n"
             ."<table width=\"100%\" border=\"0\" cellspacing=\"1\"
cellpadding=\"8\" bgcolor=\"$bgcolor1\"><tr><td>\n";
}

sub CloseTable {    print OUT "</td></tr></table></td></tr></table>\n"; }

################# file somefile.epl ##############
[$ syntax EmbperlBlocks ASP $]
<%
    $globalp = shift;
    local $escmode = 0;
    eval $globalp->{globalsubs};
    print OUT $@ if( $@ );
    &OpenTable($globalp->{bgcolor1},$globalp->{bgcolor2});
    &mytitle("<b>my subtitle</b>");
    &CloseTable;
%>
<p>some body text here.</p>
<% &myfooter("footer text"); %>






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to