Wenn man ein Perl/Tk-Programm schreibt, öffnet sich auf Windows immer außer dem Programmfenster ein schwarzes Fenster - eine Konsole. Diese kann man mit Win32::Console ausblenden:
BEGIN {
if( $^O eq 'MSWin32' ) {
require Win32::Console;
Win32::Console::Free();
}
}
$^O
enthält ein O wie in Oma, keine Null.
Hier noch ein vollständiges Beispiel:
#!perl
BEGIN {
if( $^O eq 'MSWin32' ) {
require Win32::Console;
Win32::Console::Free();
}
}
use strict;
use warnings;
use utf8;
use Tk;
use Tk::TableMatrix::Spreadsheet;
my $mw = Tk::MainWindow->new();
$mw->configure(-title => "Umgebungsvariablen");
$mw->minsize(qw(500 200));
my %table_data = (
'0,0' => 'Key',
'0,1' => 'Value',
);
my $height = scalar keys %ENV;
my $table = $mw->Scrolled('Spreadsheet',
-scrollbars => 'se',
-cols => 2,
-width => 2,
-rows => $height,
-titlerows => 1,
-variable => \%table_data,
)->pack(-fill => 'both', -expand => 1,);
insert_data($table);
$mw->MainLoop();
exit(0);
=head1 SUBS
=head2 insert_data( $table_object )
=cut
sub insert_data {
my $tbl = shift;
my $row = 1;
while ( my ($key, $val) = each %ENV ) {
printf("%s, %s => %s\n", $row, $key, $val);
$tbl->set("$row,0" => $key);
$tbl->set("$row,1" => $val);
$row++;
}
return;
} # /insert_data
Besitzt man zufällig PerlApp von ActiveState, dann können Perl-Programme in exe-Dateien kompiliert werden. Dass die Konsole bei diesen Programmen nicht angezeigt wird, kann in PerlApp in den Optionen eingestellt werden. Die Option heißt "Hide console (GUI executable)".