RFC eq {Request For Comments} --update:finally uploaded to cpan on Mon Nov 3 03:35:54 2003
# I basically took vars.pm, and turned it into vars/i.pm package vars::i; $vars::i::VERSION = '1.01'; # yuck =for IT DOESN'T WORK nor is it important (try perl -Mstrict -Mwarnings +=all -We"use vars q[$A];") BEGIN { eval q{ use warnings::register; }; eval q{ sub warnings::enabled { return $^W; } } if $@; } =cut use strict qw(vars subs); sub import { return if @_ < 2; my( $pack, $var, @value ) = @_; my $callpack = caller; my %stuff; if( not @value ){ if(ref $var ){ %stuff = @$var; } else { return; } } else { %stuff = ( $var, [@value] ); } for my $k( keys %stuff ){ $var = $k; if( ref $stuff{$k} eq 'ARRAY' ){ @value = @{ $stuff{$k} }; } elsif( ref $stuff{$k} eq 'HASH' ){ @value = %{ $stuff{$k} }; } else { @value = $stuff{$k}; } if( my( $ch, $sym ) = $var =~ /^([\$\@\%\*\&])(.+)/ ){ if( $sym =~ /\W/ ){ # time for a more-detailed check-up if( $sym =~ /^\w+[[{].*[]}]$/ ){ require Carp; Carp::croak("Can't declare individual elements of +hash or array"); } =for IT DOESN'T WORK nor is it important elsif( warnings::enabled() and length($sym) == 1 and $ +sym !~ tr/a-zA-Z// ){#$! require Carp; Carp::carp("No need to declare built-in vars"); #warnings::warn("No need to declare built-in vars" +); } =cut elsif( ($^H &= strict::bits('vars')) ){ require Carp; Carp::croak("'$var' is not a valid variable name u +nder strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; if( $ch eq '$' ){ *{$sym} = \$$sym; (${$sym}) = @value; } elsif( $ch eq '@' ){ *{$sym} = \@$sym; (@{$sym}) = @value; } elsif( $ch eq '%' ){ *{$sym} = \%$sym; (%{$sym}) = @value; } elsif( $ch eq '*' ){ *{$sym} = \*$sym; (*{$sym}) = shift @value; } elsif( $ch eq '&' ){ *{$sym} = shift @value; } else { require Carp; Carp::croak("'$var' is not a valid variable name"); } } else { require Carp; Carp::croak("'$var' is not a valid variable name"); } } }; 1; __END__ =head1 NAME vars::i - Perl pragma to declare and simultaneously initialize global +variables. =head1 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 affect 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 ]; # __END__ =head1 DESCRIPTION For whatever reason, I once had to write something like BEGIN { use vars '$VERSION'; $VERSION = 3; } and I really didn't like typing that much. 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 C<use vars;>, there is no need to fully qualify the variable + name. =head1 SEE ALSO See L<vars>, L<perldoc/"our">, L<perlmodlib/Pragmatic Modules>. =begin FOR LATER ON CPAN =head1 AUTHOR D.H aka PodMaster Please use http://rt.cpan.org/ to report bugs (there shouldn't be any +;p). Just go to http://rt.cpan.org/NoAuth/Bugs.html?Dist=vars-i to see a bug list and/or report new ones. =end FOR LATER ON CPAN =head1 LICENSE Copyright (c) 2003 by D.H. aka PodMaster. 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/. =cut


MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
I run a Win32 PPM repository for perl 5.6x+5.8x. I take requests.
** The Third rule of perl club is a statement of fact: pod is sexy.


In reply to RFC: vars::i - Perl pragma to declare and simultaneously initialize global variables. by PodMaster

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.