Thomas H. George wrote:
In order to call them from menubuttons I moved my code into subroutines.

sub open_file {
        if ( ! open NEWFILE, "<$file") {
                die "Could Not Open $file: $!"
        } else {
                my @lines = <NEWFILE>;

my() *creates* a new variable that is only visible from this point until the } two lines down.


                $message = "Open File" . $file;
        }
} # End sub open_file

sub edit_file {
        $lbox -> insert ('end', @lines);
        ...

The array @lines was declared as

use Tk;
use strict;
my @lines = ();

at the top of the program and $lbox is a Listbox. The code worked
perfectly in the main program but when moved into subroutines the array
@lines is an empty array when the second subroutine is called.
How should this be coded?

use warnings;
use strict;
use Tk;
my @lines = open_file();


sub open_file {
        if ( open my $NEWFILE, '<', $file ) {
                $message = "Open File" . $file;
                return <$NEWFILE>;
        }
        die "Could Not Open $file: $!"
}




John
--
Those people who think they know everything are a great
annoyance to those of us who do.        -- Isaac Asimov

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to