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

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; } }

Replies are listed 'Best First'.
Re^5: Breaking issue
by Corion (Patriarch) on Jul 19, 2017 at 13:28 UTC

    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.

Re^5: Breaking issue
by jayvillach (Novice) on Jul 20, 2017 at 08:53 UTC

    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?

        Yes Iknow it is assignment. For the scan and state of person ID we have separate variables here. But in the code given here i have wrote the same.