use Time::HiRes qw(usleep); #added use vars qw/$cc_number $exp_dt/; #add these two my $input1 = ''; #added these here so I my $input2 = ''; #could use them in subs my $swiped = 0; my $clicked = 0; # ... #old code matched in this section # ... $event_field->Append("Please swipe card... "); $window->Show(); $window->DoEvents(); while ($swiped != 1 && $clicked != 1) { $swiped = check_swipe(); usleep(750000); $window->DoEvents(); } if ($swiped == 1) { $event_field->Append("swiped\n"); } sleep 1; $event_field->Append("Connecting... "); sub check_swipe { $input1 = $card_input->GetLine(0); $input2 = $card_input->GetLine(1); if ($card_input->GetLine(1) !~ /\?$/) { $card_input->SetFocus(); $input1 = $card_input->GetLine(0); $input2 = $card_input->GetLine(1); $window->DoEvents(); } if ($input1 =~ /^\%B(\d{16})/i) { $cc_number = $1; } if ($input2 =~ /\=(\d{2})(\d{2})(.*)/) { $exp_dt = $2 . $1; return 1; } return 0; } sub manual_dial_Click { $card_number_label->Show(); $clicked = 1; }