linux-l: perl-tk

Olaf Radicke olaf_rad at gmx.de
Sa Jan 5 16:40:30 CET 2002


Hi!

Ich bastel hier jetzt eine weile mit Perl-Tk rum und
frage mich warum meine Skripte so langsam laufen.

In den einen Skript, werden ein beliebige Anzahl Ordner
per Zufall ausgewählt und mit gqview angezeigt. In
der Text-Variante (als ohne Tk) braucht es ca. 15 Sekunden.
Mit Tk ca.45 Sekunden. Und das bei 98% CPU-Last und 300MHz.

Hier mal die Tk-Variante:

#! /usr/bin/perl -w

use strict;
use Tk;

my $zwischen;
my @liste;
my $zufall; 
my $ausgabe;
my $anzahl;
my $durchlauf;
my $mw;

 $mw = MainWindow->new;
$mw->title("scheiß");

$mw->Button(-text => "Start",
            -command => \&rotiene)->pack;

foreach my $p (1, 2, 3, 4){
  $mw->Radiobutton(-text => $p,
                   -value => $p,
                   -variable => \$anzahl)->pack;
#                   -command => \&rotiene)->pack;
}

MainLoop;

sub rotiene {

chomp($anzahl);

#######erstes Verzeichnis einlesen#######

system("ls ./cd1 >liste.txt") && die 'kann liste.txt nicht anlegen';

open(LISTE, "liste.txt") || die "dateihandel fehlgeschlagen";
while (<LISTE>) {
    chomp;
    $zwischen = ("./cd1/"."$_");
    @liste = ($zwischen, at liste);
};
close(LISTE);

######zeites Verzeichnis einlesen##########

system("ls ./cd2 >liste.txt") && die 'kann liste.txt nicht anlegen';

open(LISTE, "liste.txt") || die "dateihandel fehlgeschlagen";
while (<LISTE>) {
    chomp;
    $zwischen = ("./cd2/"."$_");
    @liste = ($zwischen, at liste);
};
close(LISTE);

##drites Verzeichnis einlesen#######

system("ls ./cd3 >liste.txt") && die 'kann liste.txt nicht anlegen';

open(LISTE, "liste.txt") || die "dateihandel fehlgeschlagen";
while (<LISTE>) {
    chomp;
    $zwischen = ("./cd3/"."$_");
    @liste = ($zwischen, at liste);
};
close(LISTE);

############viertes Verzeichnis einlesen###########

system("ls ./cd4 >liste.txt") && die 'kann liste.txt nicht anlegen';

open(LISTE, "liste.txt") || die "dateihandel fehlgeschlagen";
while (<LISTE>) {
    chomp;
    $zwischen = ("./cd4/"."$_");
    @liste = ($zwischen, at liste);
};
close(LISTE);

############fünftes Verzeichnis einlesen######

system("ls ./cd5 >liste.txt") && die 'kann liste.txt nicht anlegen';

open(LISTE, "liste.txt") || die "dateihandel fehlgeschlagen";
while (<LISTE>) {
    chomp;
    $zwischen = ("./cd5/"."$_");
    @liste = ($zwischen, at liste);
};
close(LISTE);

for ($durchlauf =0; $durchlauf < $anzahl ; ++$durchlauf ){ 

    $zufall = rand(@liste);
    $ausgabe = $liste[$zufall];

    system ("gqview $ausgabe &");
};
}





Mehr Informationen über die Mailingliste linux-l