With the following minimal modifications to your code, it works.
I wouldn't advise using it as is particularly but if you can understand how the modifications make it work, you'll probably see a better way for doing this. (Hint: You won't need fork)
use strict;
use warnings;
use IO::Socket;
use threads;
use threads::shared;
use Thread::Queue;
use Tk;
$| = 1;
my $Q = new Thread::Queue; $Q->enqueue( 'Primer' );
my $server = IO::Socket::INET->new(
LocalPort => 2345,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 10
)
or die "Error: $@\n";
$SIG{CHLD} = sub { exit };
my $entry = "start...";
my $wsk = \$entry;
my $main = MainWindow->new( -title => 'Socket - listen', );
my $ent1 = $main->Label(
-text => "I'm waitin on port 2345\n So, you tell me...",
)->pack();
my $ent2 = $main->Label(
-text => $entry,
)->pack();
$main->repeat(
100, sub{
return unless $Q->pending;
my $in = $Q->dequeue();
$ent2->configure( -text => $in );
}
);
my $child;
my $guzik1 = $main->Button(
-text => 'Exit',
-command => sub { kill 9, $child; exit 0 },
)->pack( -side => 'bottom', );
$child = fork();
if ( $child == 0 ) {
while ( my $client = $server->accept() ) {
while ( defined( my $in = <$client> ) ) {
#print $in; #control
$Q->enqueue( $in );
}
}
}
MainLoop()
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.