Sponsored Content
Full Discussion: perl: globals and a package.
Top Forums Shell Programming and Scripting perl: globals and a package. Post 59462 by cbkihong on Monday 20th of December 2004 07:53:12 PM
Old 12-20-2004
Either you use

(1)

my $dir = 'compdata';

Or (2)

$RRD_MG::dir = 'compdata';
[...]
open SA, ">${RRD_MG::dir}/$pg";


There is NO such thing as

my $RRD_MG::dir

as package global is a separate concept from lexicals.

Of course, because "use strict" exists in the package, you need to make sure all references to package globals are qualified by the package name, so we need to put the package name in the open() statement above also, even though we refer to package globals in the same package we are currently in, which is implicitly assumed if "no strict" is in effect.

our() is a nice way to avoid this qualification in strict mode, though. But IMO I prefer qualifying package names explicitly always (if I want to go "strict") to make a visually clear distinction from lexicals (declared with "my"), which do not take any package qualifiers. Also, I think our() was only available since Perl 5.6 so servers whose perl version is out of date may not use this declaration.
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

perl package directories - what if the script is diff DIR to the one contain *.pm?

Hi there, say the package is in the ~/ and it's ~/packageFoo.pm I can use usePackage.pl in ~/ (~/usePackage.pl). Now, if I move it to ~/subDIR/usePackage.pl, the script won't work because it's not in the same DIR with packageFoo.pm How can i fix it? Thanks Gusla (1 Reply)
Discussion started by: gusla
1 Replies

2. Shell Programming and Scripting

perl package question

can someone tell me how below package command worked? I understand how global1.pl works.. but i don't see how global3.pl is working.. Is package Fred command having first output look into $main:name??? # cat global3.pl #!/usr/bin/perl -w #use strict; $main::name = "Your name Here";... (1 Reply)
Discussion started by: hankooknara
1 Replies

3. Shell Programming and Scripting

how to access globals in a function

I know any globals can be directly modified in a function without passing/returning parameters- provided the function is written within the same file. However, when I wrote functions in a saparate file (so hopefully they can be re-used by multiple script programs), and then call them from the main,... (11 Replies)
Discussion started by: bluemoon1
11 Replies

4. Shell Programming and Scripting

perl for dbms_stats package

Hi, i am new to perl and i used to manullay gathering statistics since our database servers are 8i, could any body help to get the perl script or any link to automate this work. Thanks Prakash (1 Reply)
Discussion started by: prakash.gr
1 Replies

5. Shell Programming and Scripting

Java package restructuring using shell/sed/perl

Hi we are having more than 10k file source code clutterred across different directories. 1. we want to find duplicate file name 2. all java files and having having below content in various folder under /home/raxit/src --------- /*comment etc for few line */ package hello.a.b.c; ... (0 Replies)
Discussion started by: raxitsheth
0 Replies

6. Shell Programming and Scripting

Using localisation of a Perl package

I have a Perl package, which is widely used and tested, but recently a version in another language was added. The relevant po-files have been reviewed for this and are ready for testing. What are the steps to select the language by the user? From my understanding the language environment variable... (3 Replies)
Discussion started by: figaro
3 Replies

7. UNIX for Advanced & Expert Users

How to find dependancies of .dstream package (Solaris) & .rpm package( linux)

Friends, Please let meknow, How we can find the dependancies of .dstream package & .rpm package before installation ? For AIX, We can use the inutoc . command to create the .toc file for the bff package, What about Solaris & Linux ? (0 Replies)
Discussion started by: yb4779
0 Replies

8. Shell Programming and Scripting

Perl : Global symbol requires explicit package name Error while executing

I have executed the below perl script for copying the file from one server to another server using scp. #!/usr/bin/perl -w use Net::SCP::Expect; use strict; $server= "x.x.x.x"; my $source = "/mypath/mypath"; my $destination = "/home/"; print "Login...Starting scp..."; $user="admin";... (1 Reply)
Discussion started by: scriptscript
1 Replies

9. Shell Programming and Scripting

Php server globals REQUEST_URI or HTTP_SERVER_VARS

Hi all, recently I found that $_SERVER does not deliver the complete url with query anymore on my server. http://www.example.org/search.php?stichwort=wiki echo $_SERVER; /search.phpHowever $GLOBALS works in this case. http://www.example.org/search.php?stichwort=wiki echo $GLOBALS;... (1 Reply)
Discussion started by: lowmaster
1 Replies
Symbol(3perl)						 Perl Programmers Reference Guide					     Symbol(3perl)

NAME
Symbol - manipulate Perl symbols and their names SYNOPSIS
use Symbol; $sym = gensym; open($sym, "filename"); $_ = <$sym>; # etc. ungensym $sym; # no effect # replace *FOO{IO} handle but not $FOO, %FOO, etc. *FOO = geniosym; print qualify("x"), " "; # "main::x" print qualify("x", "FOO"), " "; # "FOO::x" print qualify("BAR::x"), " "; # "BAR::x" print qualify("BAR::x", "FOO"), " "; # "BAR::x" print qualify("STDOUT", "FOO"), " "; # "main::STDOUT" (global) print qualify(*x), " "; # returns *x print qualify(*x, "FOO"), " "; # returns *x use strict refs; print { qualify_to_ref $fh } "foo! "; $ref = qualify_to_ref $name, $pkg; use Symbol qw(delete_package); delete_package('Foo::Bar'); print "deleted " unless exists $Foo::{'Bar::'}; DESCRIPTION
"Symbol::gensym" creates an anonymous glob and returns a reference to it. Such a glob reference can be used as a file or directory handle. For backward compatibility with older implementations that didn't support anonymous globs, "Symbol::ungensym" is also provided. But it doesn't do anything. "Symbol::geniosym" creates an anonymous IO handle. This can be assigned into an existing glob without affecting the non-IO portions of the glob. "Symbol::qualify" turns unqualified symbol names into qualified variable names (e.g. "myvar" -> "MyPackage::myvar"). If it is given a second parameter, "qualify" uses it as the default package; otherwise, it uses the package of its caller. Regardless, global variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with "main::". Qualification applies only to symbol names (strings). References are left unchanged under the assumption that they are glob references, which are qualified by their nature. "Symbol::qualify_to_ref" is just like "Symbol::qualify" except that it returns a glob ref rather than a symbol name, so you can use the result even if "use strict 'refs'" is in effect. "Symbol::delete_package" wipes out a whole package namespace. Note this routine is not exported by default--you may want to import it explicitly. BUGS
"Symbol::delete_package" is a bit too powerful. It undefines every symbol that lives in the specified package. Since perl, for performance reasons, does not perform a symbol table lookup each time a function is called or a global variable is accessed, some code that has already been loaded and that makes use of symbols in package "Foo" may stop working after you delete "Foo", even if you reload the "Foo" module afterwards. perl v5.14.2 2010-12-30 Symbol(3perl)
All times are GMT -4. The time now is 04:29 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy