Jens Müller: Was bedeutet diese Fehlermeldung ?

Beitrag lesen

Hallo ,

Ein BEGIN Block wird vor dem Start des Skriptes ausgeführt

(während der Übersetzung), es sollte schon klar sein, warum
man das tut.

Ich tue es ja nicht,
ich möchte es ja nur verstehen!

Es ist a nicht Poldis Script, er moechte es ja nur bei sich einsetzen.

Begin

Es sollte aber nichts mit deiner Fehlermeldung zu tun haben.

Doch es sollte:

»A BEGIN code block is executed as soon as possible, that is, the
  moment it is completely defined, even before the rest of the
  containing file (or string) is parsed.«

Original Code:~~~perl

sub success_page_html_preamble {
  my ($self, $date) = @_;

my $title = $self->escape_html( $self->{FormConfig}{'title'} || 'Thank You' );
  my $torecipient = 'to ' . $self->escape_html($self->{FormConfig}{'recipient'});
  $torecipient = '' if $self->{Hide_Recipient};
  my $attr = $self->body_attributes;

  
Der Fehler des Scripts liegt da dran, das der Begin Block als eigene  
Script Datei augefuehrt wird. [In dieser Existiert die Variable `$tDanke`{:.language-perl}  
gar nicht.  
  Die Variable `$tDanke`{:.language-perl} muss noch einmal explizit mit `my`{:.language-perl} aufgerufen  
werden  
  
~~~perl
  
sub success_page_html_preamble {  
  my ($self, $date) = @_;  
  
  # Kleine Modifizierung: Wenn du noch andere Variablen in $tDanke  
  # aufrufst, dann  muessn diese auch mit *my* gekenzeichnet werden  
  my $tDanke = ".....";  
  my $title = $self->escape_html( $self->{FormConfig}{'title'} || "$tDanke");  
  ...  

Die vorherige deklarierung, kann geloescht werden

  
use vars qw(... $tDanke ....);  
...  
# ... und wech damit: $tDanke = ".....";  

gruesse aus'm ruhrpott
  jens mueller

--
As long as a single mind remembers, as long as a single heart
beats with passion, how can a dream die?
\//_ Live long and prosper
sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|