Sven (κ): Gültigkeit von Variablen

Beitrag lesen

Hallo Klausi,

Ist die Definition my (...) zu Programmbeginn nicht gleichwertig zu use vars ...?
use strict;
my (@names, @values, $mail_text, $name, $value);    <===== alt
my (@names, @values, $mail_text);                   <===== neu (ok)

Wie my funktioniert sagt dir perldoc

......
use strict;
use vars qw(@EXPORT_OK $MailRegEx);                 <===== alt
use vars qw(@EXPORT_OK $MailRegEx $name $value);    <===== neu (ok)

Wie das vars-Pragma funktioniert, sagt dir auch perldoc (und zwar funktioniert das entschieden anders als "my"!)

sub text_build
   {
    $mail_text = $mail_text . $name . ": " . $value . "\n";
   }

wenn die Funktion allerdings nach der Deklaration der Variablen steht, müsste name & value in jedem Fall definiert sein. my und use vars bzw. our kann in diesem Fall analog verwendet werden, weil du dich im gleichen Scope befindest (sprich Namensraum, also Main::).

text_build();

müsste, so wie ich es verstanden habe, funktionieren. Aber es war ja auch nicht der ganze quelltext abgedruckt.

Alternativ könntest du die benötigten Variablen ja auch einfach als Parameter übergeben. Das ist zwar weniger perfomant, weil Kopien, aber mit Pointern würdest du das Defizit größtenteils kompensieren ;-)

Grüße,

Sven

--
ich hatte mal meterlange signs, die sind alle weg