Klausi: Gültigkeit von Variablen

Beitrag lesen

Hi,
kann mir jemand erklären, warum in der untenstehenden Routine text_build in der Version alt die Variablen $name und $value undefiniert sind, in der Version neu aber nicht. Was mich besonders stutzig macht ist, dass mail_text in beiden Versionen vorhanden ist.
Ist die Definition my (...) zu Programmbeginn nicht gleichwertig zu use vars ...?

#!/usr/bin/perl -w

use strict;
my (@names, @values, $mail_text, $name, $value);    <===== alt
my (@names, @values, $mail_text);                   <===== neu (ok)
......
use strict;
use vars qw(@EXPORT_OK $MailRegEx);                 <===== alt
use vars qw(@EXPORT_OK $MailRegEx $name $value);    <===== neu (ok)
....
sub text_build
   {
    $mail_text = $mail_text . $name . ": " . $value . "\n";
   }
.....
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
.....
  $query = new CGI;
  @names = $query->param;
.....
  $mail_text="";
.....
  $name= ...;
  $value=...;
  text_build();
  .....