I'm going to assume that you didn't have warnings enabled since if you did, you might have noticed the "Unsuccessful stat on filename containing newline" warning.
Tk Text widget contents always contains at least one newline, even if you didn't explicitly add one. It's one of the little bizarrnesses(word?) you almost never need to deal with except when you do.
You could easily chomp() the contents to get rid of the newline assuming you haven't changed $/, but you would likely be better off using Entry widgets instead. They are specifically designed to be used for single line inputs.
You also need to escape the $ in your print statement, but that is minor.
Here is your script, modified to use Entrys (and perltidyed.)
use warnings; use strict; use Tk; # Create the GUI # Create the Main Window and set the size to 500 x 200 my $mw = MainWindow->new; $mw->title("Cheat Checker"); my $sizeOfWindow = $mw->Canvas( -width => 500, -height => 80 )->pack; # Create the Menus $mw->configure( -menu => my $menubar = $mw->Menu ); my $fileMenu = $menubar->cascade( -label => '~File' ); my $helpMenu = $menubar->cascade( -label => '~Help' ); my $exitMenuOption = $fileMenu->command( -label => 'Exit', -underline => 0, -command => \&exit, ); my $aboutMenuOption = $helpMenu->command( -label => 'About', -underline => 0, -command => sub { my $d1 = $mw->Dialog( -text => "Cheat Checker\n" . "Version: 0.0.0.1\n" . "Andy Daykin\n" . "2-11-08", ); $d1->Show; } ); # Options for program settings my $labelDirPath = $mw->Label( -text => "Directory of files to grade" +)->pack(); my $textDirPath = $mw->Entry( -width => 25, )->pack; my $labelFileExt = $mw->Label( -text => "File Extension to pick up" ) +->pack; my $textFileExt = $mw->Entry( -width => 25 )->pack; my $sumbitOptions = $mw->Button( -text => 'Submit', -command => sub { &runLoop( $textDirPath->get, $textFileExt->get ) + } )->pack; # Program output window my $output = $mw->Text( qw/-width 60 -height 10/ )->pack; tie *STDOUT, ref $output, $output; # Initialize the GUI MainLoop; sub runLoop { print "Starting \$FindBin::Script " . localtime() . "...\n"; # Set parameters passed in to dirPath and fileExt my $dirPath = $_[0]; my $fileExt = $_[1]; print "dirPath: ", $dirPath, "\n"; print "fileExt: ", $fileExt, "\n"; # Set defaults if needed: # This is where it dies and spits out the error mess +age unless ( -d $dirPath ) { die "The directory path '$dirPath' is not a valid directory, $ +!"; } unless ($fileExt) { die "You need to supply a file extension!"; } #blah blah blah I do some stuff :-) }
In reply to Re: Attempting to pass parameters to a sub via TK Text input
by thundergnat
in thread Attempting to pass parameters to a sub via TK Text input
by adaykin31
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |