Contact US

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Scoping problem?

Scoping problem?

Scoping problem?

I have a file of the following structure
In myParser.pl:

use File::Spec;
require 'mFileParser.pl';

$tempDir     = File::Spec->catfile("root","temp");  
#Some other codes
processMFile();  #defined in mFileParser.pl
#Some other codes

In mFileParser.pl

use File::Spec;
sub processMFile()

    print "DEBUG TEMPDIR-" . $tempDir ."\n";
    $tmpFile = File::Spec->catfile($tempDir,"tmp.txt");

The problem is in processMFile within the mFileParser.pl, when it is invoked via myParser.pl, the variable at $tempDir within    print "DEBUG TEMPDIR-" . $tempDir ."\n" is not set to "root";

What have I done wrong?  I would rather not have to initialise common/global variable across two scripts anywhere and everywhere !  Where should it really be initialised?

Note, there is no subroutine defined in the parent- myParser.pl

RE: Scoping problem?

try putting the variable declaration above the require line.
if this doesn't work, you could just add a line at the beginning of the subroutine to take an argument for $tempdir to be set within.
another option is to change to call to $tempdir to a call to $main::tempdir, which might work as well.


"If you think you're too small to make a difference, try spending a night in a closed tent with a mosquito."

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close