Calocybe: Global Variable in einem Block deklarieren

Beitrag lesen

Moin!

ist es möglich eine globale Variable erst in einem Block zu deklarieren ?
Hier mal ein Beispiel:

use strict;
use warnings;

my $var = "Fische";
print " Hallo $var \n";
{
our $var2 = "Hunde";
print " Hallo $var2 \n";
}
print " Hallo $var \n";
print " Hallo $var2 \n";

Das gibt folgende Fehlermeldung:
Variable "$var2" is not imported at D:\Proggen\Perl\our.pl line 15.
Wie kann ich denn die Variable $vars "importieren" ?

"An our declares the listed variables to be valid globals within the enclosing block, file, or eval. That is, it has the same scoping rules as a "my" declaration, but does not create a local variable."

Das heisst, $var2 wird an der schliessenden geschweiften Klammer vergessen.

Du kannst aber ganz normal
  use vars qw/$var2/;
schreiben, auch innerhalb des Blocks. Du solltest $var2 dann aber nicht weiter oben im Quelltext verwenden.

So long

--
Es gibt Diebe, die nicht bestraft werden und einem doch das Kostbarste stehlen: die Zeit.
    -- Napoleon Bonaparte