use strict; use warnings; use Win32::GUI(); my $window = new Win32::GUI::DialogBox( -width => 520, -height => 580, ); $window->Show(); my $entry = $window->AddTextfield( -size => [440,25], ); $entry->SetFocus; my $button = $window->AddButton( -name => 'button', -text => 'Search', -left => 448, -size =>[60,25], -ok => 1, ); my $display_field = $window->AddTextfield( -top => 30, -size => [513,513], -vscroll => 1, -multiline => 1, ); Win32::GUI::Dialog; sub button_Click { my $now = time; my $file = "./data"; #text file about the size of 30 MB open my $data, '<', $file or die "Open failed: $!"; $display_field->SelectAll(); $display_field->Clear(); my $query = $entry->Text; while (<$data>) { $display_field->Append($_) if /$query/i; } $now = time - $now; my $time = sprintf("\r\nTotal running time: %02d:%02d:%02d\r\n", int($now / 3600), int(($now % 3600) / 60), int($now % 60)); $display_field->Append($time); }