in reply to Re^3: Perl tk - How to integrate external scripts
in thread Perl tk - How to integrate external scripts

 $mw-> Button (-text =>'Get Statistics', -command =>\&get_statistics($current_file));

The \&get_statistics($current_file) wouldn't work, as it would call the function right away (with an empty $current_file) at the time the button is set up, and set a reference to its return value as the button callback...  In other words, \&func is quite different from \&func(), with the former being a coderef to the function.

What you more likely want is

$mw-> Button (-text =>'Get Statistics', -command => sub { get_statisti +cs($current_file) } );

which would call the function with the current value of $current_file at the time the button is pressed.

Though, as the variable is global anyway, there's no real need to pass it, so you could also leave it at

-command => \&get_statistics

and access $current_file directly in the routine.

The OP's problem is primarily having made $open (i.e. the name of the selected file) scoped locally to the sub open_file, so it's not available outside of the routine.