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]