NAME
vars::i - Perl pragma to declare and simultaneously initialize global variables.
SYNOPSIS
use Data::Dumper;
$Data::Dumper::Deparse = 1;
use vars::i '$VERSION' => 3.44;
use vars::i '@BORG' => 6 .. 6;
use vars::i '%BORD' => 1 .. 10;
use vars::i '&VERSION' => sub(){rand 20};
use vars::i '*SOUTH' => *STDOUT;
BEGIN {
print SOUTH Dumper [
$VERSION, \@BORG, \%BORD, \&VERSION
];
}
use vars::i [ # has the same effect as the 5 use statements above
'$VERSION' => 3.66,
'@BORG' => [6 .. 6],
'%BORD' => {1 .. 10},
'&VERSION' => sub(){rand 20},
'*SOUTH' => *STDOUT,
];
print SOUTH Dumper [ $VERSION, \@BORG, \%BORD, \&VERSION ];
DESCRIPTION
For whatever reason, I once had to write something like
BEGIN {
use vars '$VERSION';
$VERSION = 3;
}
or
our $VERSION;
BEGIN { $VERSION = 3; }
and I really didn't like typing that much. With this package, I can say:
use vars::i '$VERSION' => 3;
and get the same effect.
Also, I like being able to say
use vars::i '$VERSION' => sprintf("%d.%02d", q$Revision: 1.3 $ =~ /: (\d+)\.(\d+)/);
use vars::i [
'$VERSION' => sprintf("%d.%02d", q$Revision: 1.3 $ =~ /: (\d+)\.(\d+)/),
'$REVISION'=> '$Id: GENERIC.pm,v 1.3 2002/06/02 11:12:38 _ Exp $',
];
Like with use vars;
, there is no need to fully qualify the variable name. However, you may if you wish.
NOTES
Specifying a variable but not a value will succeed silently, and will not create the variable. E.g.,
use vars::i '$foo';
is a no-op.Trying to create a special variable is fatal. E.g.,
use vars::i '$@', 1;
will die at compile time.
SEE ALSO
See vars, "our" in perldoc, "Pragmatic Modules" in perlmodlib.
MINIMUM PERL VERSION
This version supports Perl 5.6+. If you are running an earlier Perl, use version 1.01 of this module (PODMASTER/vars-i-1.01).
DEVELOPMENT
This module uses Minilla for release management. When developing, you can use normal prove -l
for testing based on the files in lib/
. Before submitting a pull request, please:
make sure all tests pass under
minil test
update the
Changes
fileupdate the
.mailmap
file to list your PAUSE user ID if you have one, and if your git commits are not under your@cpan.org
email. That way you will be properly listed as a contributor in MetaCPAN.
AUTHORS
D.H. <podmaster@cpan.org>
Christopher White <cxw@cpan.org>
Thanks
Thanks to everyone who has worked on vars, which served as the basis for this module.
SUPPORT
Please report any bugs at https://github.com/cxw42/Perl-vars-i/issues.
You can also see the old bugtracker at http://rt.cpan.org/NoAuth/Bugs.html?Dist=vars-i for older bugs.
LICENSE
Copyright (c) 2003 by D.H. aka PodMaster. Portions copyright (c) 2019 by Chris White. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. If you don't know what this means, visit http://perl.com/ or http://cpan.org/.