sub create_glob_var {
my ($glob_var_str) = @_;
no strict 'refs';
$$glob_var_str = undef; # or whatever you want to set it to
}
no strict 'refs'
необходим, только если действует use strict
, что всегда должно быть.
Добавление:
Если вы спрашиваете, есть ли способ написать подпрограмму create_glob_var
, чтобы следующий код завершился успешно:
use strict;
create_glob_var("bar");
$bar = "whatever";
... тогда ответ "Нет" Однако прагма Perl vars
сделает то, что вы хотите:
use strict;
use vars qw($bar);
$bar = "whatever";
Но это своего рода кодирование Perl в старом стиле. В настоящее время обычно делают это:
use strict;
our $bar = "blah";
our
также может просто объявить глобальные переменные, которые могут быть свободно использованы позже:
our ($foo, @bar, %baz);
# ...
$foo = 5;
@bar = (1, 2, 3);
%baz = (this => 'that');