ich benötige dringend Unterstützung bei einem Sccript, welches das Tk Modul nutzt(Eingabedatei suchen; Zeilennummerierung eintragen; Ausgabedatei definieren und speichern). Folgenden Code habe ich bis jetzt:
#!/usr/bin/perl$|++;
use strict;
use warnings;
use Tk;
my $mw = new MainWindow;
$mw->geometry("550x200");
my $input_frame = $mw->Frame()->pack(-fill => 'x');
my $output_frame = $mw->Frame()->pack(-fill => 'x');
my $process_frame = $mw->Frame()->pack(-fill => 'x');
$input_frame->Label(-text => 'Eingabedatei: ')->pack(-side => 'left');
my $inputfile_entry = $input_frame->Entry(-width => 50)->pack(-side => 'left');
$input_frame->Button(-text => 'Eingabedatei suchen ',
-command => [\&getFile, 'INPUT', $mw, $inputfile_entry])->pack(-side => 'left');
$output_frame->Label(-text => 'Ausgabedatei:')->pack(-side => 'left');
my $outputfile_entry = $output_frame->Entry(-width => 50)->pack(-side => 'left');
$output_frame->Button(-text => 'Ausgabedatei definieren',
-command => [\&getFile, 'OUTPUT', $mw, $outputfile_entry])->pack(-side => 'left');
my $listbox = $process_frame->Listbox(-height => 250)->pack(-fill => 'both');
my $scroll = $listbox->Scrollbar(-command => [ 'yview', $listbox ]);
$listbox->configure(-yscrollcommand => [ 'set', $scroll ]);
$scroll->pack(-side => 'right',
-fill => 'y',
);
$process_frame->Button(-text => 'Zeilennummerierung hinzufügen',
-command => [\&addLinenumbers, $mw, $inputfile_entry, $listbox])->pack(-side => 'left');
$process_frame->Button(-text => 'Schreibe Ausgabedatei',
-command => [\&writeFile, $mw, $outputfile_entry, $listbox])->pack(-side => 'left');
$process_frame->Button(-text => 'Script beenden',
-command => sub { exit })->pack(-side => 'left');
MainLoop();
sub getFile {
my($action, $toplevel, $entry) = @_;
my($filename);
my $filetypes = [ ['Textfiles', ['.txt'] ] ];
if($action eq 'INPUT') {
$filename = $toplevel->getOpenFile(-defaultextension => '.txt',
-filetypes => $filetypes,
-title => 'Select inputfile...');
}
elsif($action eq 'OUTPUT') {
$filename = $toplevel->getSaveFile();
}
else {
warn "getFile(), no action specified!\n";
}
if($filename ne '') {
$entry->delete(0, 'end');
$entry->insert(0, $filename);
}
}
sub addLinenumbers {
my($toplevel, $in_entry, $listbox) = @_;
my($maxlines, $linenum);
$listbox->delete(0, 'end');
my $infile = $in_entry->get();
open(IN, '<', $infile) or (warn $! && return);
while(my $line = <IN>) {
chomp($line);
$line = ++$linenum . ' ' . $line;
$listbox->insert($linenum, $line);
}
close(IN);
}
sub writeFile {
my($toplevel, $out_entry, $listbox) = @_;
my $outfile = $out_entry->get();
open(OUT, '>', $outfile) or (warn $! && return);
print OUT "$_\n" for $listbox->get(0, 'end');
close(OUT);
}