http://www.perlmonks.org?node_id=370792

At work, I admin a half dozen or so different Oracle servers, and sometimes it's a pain to try and remember which particular DB is on which machine, so I wrote a small script to allow me to RDC to the correct machine given a DB name. Using wperl.exe rather than perl.exe gets rid of the console window opening up when you run it.
#!C:\perl\bin\wperl.exe -w use strict; use warnings; use Win32::Process; use Tk; my $mw = MainWindow->new; $mw->Label(-text => 'Oracle DB:')->pack; my $db = $mw->Entry( -width => 20, )->pack; $db->bind('Tk::Entry', '<KeyPress-Return>', \&connect); $db->bind('Tk::Entry', '<KeyPress-Escape>', sub { exit }); $db->focus; my $message = $mw->Message(-justify => 'center', -text => '')->pack; MainLoop; sub connect { my $dbname = $db->get; my ($server) = `tnsping $dbname` =~ /HOST=([^)]*)/; if (defined $server) { my $ProcessObj; Win32::Process::Create($ProcessObj, "c:\\winnt\\system32\\mstsc.exe", "mstsc /v:$server", 0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport(); exit; } else { $message->configure(-text => "The database \"$dbname\" can't b +e found"); } } sub ErrorReport { print Win32::FormatMessage( Win32::GetLastError() ); }