in reply to Re^2: Breaking issue
in thread Breaking issue

Maybe Time-limited input on STDIN or alarm help you.

Replies are listed 'Best First'.
Re^4: Breaking issue
by jayvillach (Novice) on Jul 19, 2017 at 13:23 UTC

    hi Corian Thaks a lot for the advice again. But it did not work. As you said that a small example of the code will help, so here it goes,

    use strict; use warnings; use constant UPDATE; use constant TIMEOUTVALUE => 10; while(1) { if ($scan = PERSONID) { #give status for the book, for example - borrowed } elsif ($scan = Book) { if ($transaction->{'STATE'} = PERSONID) { push (@(transaction->{'BOOK'})) } my $valid = 1; if (($transaction-> TIMEOUTVALUE) >= time() && ($transacion-> +{'STATE'} = PERSONID)) if ($valid) { $transaction->{'STATE'} = UPDATE; } } if (($transaction->{TIMEOUTVALUE} >= time()) && ($transaction->{' +STATE'} = BOOK)) { } else {$transaction->{'STATE'} = UPDATE; } }

      Your example does not tell me when your program reads from the keyboard or barcode scanner.

      The place(s) where your program reads from the keyboard or barcode scanner are where your program hangs. You need to wrap these places in a timeout so that your program only waits the alloted amount of time instead of forever.

      Hi Corion, thanks again. this time again I have update the code to more detail. Is this helpfulnow ? Look at the regular expression at line 5. This expression needs to be matched and the entity of UPDATE section is added in this post, this is how it is working, the scanner is connected to com port if com port matches a receiver thread starts at command prompt.

      use strict; use warnings; use constant UPDATE; use constant TIMEOUTVALUE => 10; while(1) { if ($scan = PERSONID) { #give status for the book, for example - borrowed } elsif ($scan = Book) { if ($transaction->{'STATE'} = PERSONID) { push (@(transaction->{'BOOK'})) } my $valid = 1; if (($transaction-> TIMEOUTVALUE) >= time() && ($transacion-> +{'STATE'} = PERSONID)) if ($valid) { $transaction->{'STATE'} = UPDATE; } } if (($transaction->{TIMEOUTVALUE} >= time()) && ($transaction->{' +STATE'} = BOOK)) { } else {$transaction->{'STATE'} = UPDATE; } } if ($transaction -> {'STATE'} = UPDATE) { my $book = join("&iid[]=", @{$transaction -> {'BOOK'}}) # if t +his is true then it updates }
        if ($scan = PERSONID) { # ... if ($transaction->{'STATE'} = PERSONID) # ... if ($transaction -> {'STATE'} = UPDATE) {

        Are you aware that those are assignments and not comparisons?