Написал простой скрипт на Perl Tk для создания нескольких копий одного файла.
Но, как следует из названия, в моем скрипте появляется ошибка «Невозможно открыть файл».
Этот скрипт работает с терминала (Linux), но не тогда, когда я пытаюсь сделать это с помощью Tk.
use Tk;
use Tk::FileSelect;
use File::Spec;
use File::Basename;
use Cwd;
my $mw = new MainWindow; # Main Window
my $frm_name = $mw -> Frame() -> pack();
my $lab = $frm_name -> Label(-text=>"File Name:") -> pack();
my $ent = $frm_name -> Entry() -> pack();
my $but = $mw -> Button(-text=>"Get File", -command =>\&push_button) -> pack();
my $copyBtn =$mw -> Button(-text=>"Copy", -command =>\&makeCopies) -> pack();
my $dd = getcwd;
my $count;
#Text Area
my $txt = $mw -> Text(-width=>50, -height=>10) -> pack();
MainLoop;
#This function will be executed when the button is pushed
sub push_button {
my $fs = $mw->FileSelect();
my $file = $fs->Show;
#my $fn = basename($file);
my $fn = File::Spec->splitpath( $file );
print "$fn\n";
$ent -> insert('end',$fn);
}
sub makeCopies{
while ($count < 5){
chdir getcwd;
open (FN, $fn) or warn "Unable to open file";
binmode (FN);
open (FN,">($count)$fn") or warn "Unable to copy file";
print (<FN>);
$count++;
}
}
close(FN);
Я пробовал и Basename, и File :: Spec, думая, что, может быть, один или другой неправильно анализируют
Но я не могу понять, почему он не откроет $ fn ??