Pregunta

I was wondering if I could use some globals variables while using strict pragma.

For example, I've tried to do this:

#!/usr/bin/perl -w

use strict;

sub print_global{
     print "your global is: $global\n";
}

$global = 1234;     #or even my $global = 1234;

print_global;

But as you can notice it doesn't work.

Are there any ways to define global variables when using strict pragma? (if any, of course)

¿Fue útil?

Solución

Just declare the global before using it:

our $global;

Unlike my, this does not create a new variable, but rather makes the variable available in this scope. So you could safely have code like

sub print_global{
     our $global;  # does not create a new variable like `my` would
     print "your global is: $global\n";
}

our $global = 1234;

print_global;

Otros consejos

Declare my $global; above your function and it'll work with use strict;.

use strict; tells Perl you wish to be forced to declare your variables, and you did not do so. Add a declaration where appropriate.

#!/usr/bin/perl -w

use strict;

my $global;     # <----

sub print_global{
     print "your global is: $global\n";
}

$global = 1234;
print_global;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top