On Tue, 4 Dec 2001, Daniel Falkenberg wrote:

> Hi All,
>
> while(1) {
>   #Read from a sub outside of the while loop...
>   get_sub();
> }
>
> get_sub {
>   print $test;
> }
>
> I understand that the above code doesn't really say much but it gives a
> brief understading of my problem.  Baiscally when I compile the script I
> get a compilation error saying...
>
> Name "main::test" used only once: possible typo at ./test line (n).

Something tells me you aren't using the -w option and don't have 'use
strict' at the top of your script, otherwise, you may have caught
something like this.

Where is $test declared and/or defined?  Inside the sub or outside?  If
you declare and/or define $test outside the sub, then you should pass it
into the sub as an argument:

my $test = 0;
while(1) {

        #do stuff
        get_sub($test);
}

sub get_sub {

        my $test_msg = shift;
        print $test_msg;
}

The basic idea, if I am following your problem, is to not use global
variables inside of subs, if you can help it.  It can lead to subtle bugs
and cause unwanted side effects.  There's nothing wrong wioth using a sub
inside a loop -- if you need to process each element of an array or a
hash, a loop is the best way to do it.

-- Brett
                                          http://www.chapelperilous.net/
------------------------------------------------------------------------
The angry man always thinks he can do more than he can.
                -- Albertano of Brescia


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to