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

FILEHANDLE not visible outside subroutine

by ravi6289 (Initiate)
on Jul 26, 2013 at 16:00 UTC ( #1046546=perlquestion: print w/ replies, xml ) Need Help??
ravi6289 has asked for the wisdom of the Perl Monks concerning the following question:

Hello everybody ,, I'm a beginner in perl .I'm having a small problem with my code :
$|=1; my $myohmy : shared = 1; print "Checking .."; $thr = threads->create(\&checkdot)->detach; $thr1 = threads->create(\&psou); $thr1->join(); $myohmy = 0; sub checkdot { $|++; while ( $myohmy == 1 ) { print "."; sleep 1; } } ###### above code not relevant ##### sub psou { open (PS, "$psout |"); #### $psout is the command ####### } while (<PS>) ####### PROBLEM -> No output here #### { ..

######## It is here the problem occurs ,, the filehandle PS is not visible , I'm pretty sure it's a scoping problem , because when the "open" statement is outside the subroutine, the code after "while" works . I have also tried creating a global variable , and with the three argument open , but it doesn't work . Could you please suggest me as to how I can fix this #############

Comment on FILEHANDLE not visible outside subroutine
Download Code
Re: FILEHANDLE not visible outside subroutine
by choroba (Abbot) on Jul 26, 2013 at 16:11 UTC
    You should always check the return value of open:
    open PS, "$psout |" or die $!;

    Update: Also, it seems you are running the sub in a thread. Why do you think a filehandle would be shared?

    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      Hello choroba ,, I'm sure the open statement returns just fine ,. Although , I was not aware filehandles could not be shared in threads (newbie :/) , thank you so much for pointing that out . I have modified the code to avoid the filehandle statement , and used a shared variable to store the command output , it works great !! .. Thanks again ... :)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (9)
As of 2014-12-27 04:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls