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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.