Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

FILEHANDLE not visible outside subroutine

by ravi6289 (Initiate)
on Jul 26, 2013 at 16:00 UTC ( [id://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 #############

Replies are listed 'Best First'.
Re: FILEHANDLE not visible outside subroutine
by choroba (Cardinal) 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
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (5)
As of 2024-04-24 05:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found