以下是错误:
$ perl ftper.pl 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中使用未初始化的值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中的未初始化值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中的未初始化值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中的未初始化值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中的未初始化值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.1 的哈希元素中的未初始化值 $id /i686-cygwin/Tk/After.pm 第 39 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。 在 /usr/lib/perl5/vendor_perl/5.10/i686 处删除的未初始化值 $id 的 se cygwin/Tk/After.pm 第 87 行。
这是 Perl/Tk 代码:
#! /usr/bin/perl -w
use strict;
use Tk;
use Tk::Scale;
use File::DosGlob 'glob';
#####################################################################
# Define variables #
#####################################################################
my $UserID;
my $Password;
my $BnsNode;
my $Status_msg = "BUILD SCRIPT!";
#####################################################################
# Window variables #
#####################################################################
my $mw;
my $frmUserID;
my $lblUserID;
my $frmPassword;
my $lblPassword;
my $edtUserID;
my $edtPassword;
my $frmTop;
my $frmBig;
my $frmButtonLine;
my $btnExit;
my $btnSubmit;
my $lblStatus;
my $lblUnixNode;
my $frmUnixNode;
my $edtUnixNode;
#################################################################
# Main Logic #
#################################################################
init_mainwindow();
MainLoop;
#################################################################
# init_mainwindow #
#################################################################
sub init_mainwindow {
$mw = MainWindow->new;
$mw->title("BUILD");
$mw->resizable(100, 100);
$mw->geometry("+175+100");
# Top Level frame for top section of form.
$frmTop = $mw->Frame(-bd => 2, -relief => 'ridge')
->pack(-side => 'top', -fill => 'x', -pady => 3);
$frmUserID = $frmTop->Frame(-bd => 2)->pack(
-side => 'top', -fill => 'x');
$lblUserID = $frmUserID->Label(-text => "Unix User ID:")
->pack(-side => 'left');
$edtUserID = $frmUserID->Entry(-textvariable => \$UserID,
-background => 'white')->pack(-side => 'left');
$frmUnixNode = $frmTop->Frame(-bd => 2)->pack(
-side => 'top', -fill => 'x');
$lblUnixNode = $frmUserID->Label(-text => "BNS Number")
->pack(-side => 'left');
$edtUnixNode = $frmUserID->Entry(-textvariable => \$BnsNode,
-background => 'white')->pack(-side => 'left');
$frmPassword = $frmTop->Frame(-bd => 2)->pack(
-side => 'top', -fill => 'x');
$lblPassword = $frmPassword->Label(
-text => "Password: ")->pack(-side => 'left');
$edtPassword = $frmPassword->Entry(-textvariable => \$Password,
-background => 'white', -show => "*")
->pack(-side => 'left');
# Top Level frame for bottom section of form.
$frmButtonLine = $mw->Frame(-bd => 2, -relief => 'ridge')
->pack(-side => 'top', -fill => 'x', -pady => 3);
$btnExit = $frmButtonLine->Button(-text => "Exit",
-command => \&close_mw, -width => 6)->pack(
-side => 'right', -padx => 1);
$btnSubmit = $frmButtonLine->Button(-text => "Run Script",
-command => \&execute_script, -width => 6)->pack(
-side => 'right', -padx => 1);
$lblStatus = $mw->Label(-textvariable => \$Status_msg,
-borderwidth => 2, -relief => 'groove')
->pack(-fill => 'x', -side => 'bottom');
$edtUserID->focus;
}
#####################################################################
# excute_script #
#####################################################################
sub execute_script {
unless (defined($UserID)) {
update_status("Must enter a user id!");
$edtUserID->focus;
return 0;
}
unless (defined($Password)) {
update_status("Must enter a password!");
$edtPassword->focus;
return 0;
}
update_status("$BnsNode ,$UserID ");
}
#####################################################################
# close_mw #
#####################################################################
sub close_mw {
$mw->destroy;
}
#####################################################################
# update_status #
#####################################################################
sub update_status {
my ($msg) = @_;
$Status_msg = $msg;
$lblStatus -> update;
}