in reply to Re: Breaking issue
in thread Breaking issue

Hi Corion Thak you for the example and also for the quick response. Yes you are right the structure is more or less the same but here we have if instead of while, but can you guide me how I can make it so that the scanner wont wait for information and update it ?

Replies are listed 'Best First'.
Re^3: Breaking issue
by Corion (Patriarch) on Jul 18, 2017 at 13:05 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 }