Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^3: How not to use "our"?

by wazoox (Prior)
on Nov 29, 2010 at 14:50 UTC ( #874259=note: print w/ replies, xml ) Need Help??


in reply to Re^2: How not to use "our"?
in thread How not to use "our"?

Simply build a function that returns the variables. Define values inside a function to make them inaccessible from outside. Something like this :

#!/usr/local/bin/perl use strict; use warnings; package MyData; sub getData { my $data = { 'test' => 'yes', 'key' => 'value', 'some' => 'thing', 'array' => [ 1, 2, 3 ], }; my $key = shift; defined $data->{$key} ? return $data->{$key} : return; } package main; foreach my $testcase (qw(test key some bork)) { my $value = MyData::getData($testcase); if ($value) { print "Data for $testcase : $value \n"; } else { print "No such data : $testcase .\n"; } }


Comment on Re^3: How not to use "our"?
Download Code
Re^4: How not to use "our"?
by ikegami (Pope) on Nov 29, 2010 at 16:34 UTC

    How about variables that contain constant values

    Simply build a function that returns the variables.

    You could, but it's perfectly fine to export constants. I'd make them look like constants, though. In fact, I don't see why we couldn't make them actual constants.

    package PkgA; use strict; use warnings; use Exporter qw( import ); my %max_text_constants; my @max_text_constants; BEGIN { %max_text_constants = ( TINY_TEXT_MAX_LEN => 100, TEXT_MAX_LEN => 200, MEDIUM_TEXT_MAX_LEN => 500, LONG_TEXT_MAX_LEN => 2000, ); @max_text_constants = keys(%max_text_constants); } use constant \%max_text_constants; our @EXPORT_OK = ( @max_text_constants, ... ); our @EXPORT_TAGS = ( max_text => \@max_text_constants, ... all => \@EXPORT_OK, ); 1;
    use PkgA qw( LONG_TEXT_MAX_LEN ); use PkgA qw( :max_text ); use PkgA qw( :all );

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://874259]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2015-07-06 03:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls