Thread Vor kopieren warten bis Subroutine abgeschlossen (28 answers)
Opened by giordano at 2010-02-17 14:50

sid burn
 2010-02-22 15:24
#133426 #133426
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
In jedem Fall ist das Verwenden von Methoden auf Dateihandles auch für Anfänger nachvollziehbarer als kryptische setzen globaler $-Variablen.

Vorallem, sehr viel aufwendiger wird es wenn man autoflush auf einem Handle aktivieren möchte das nicht STDOUT ist.

Zum Beispiel um autoflush auf $fh zu aktivieren:

Code (perl): (dl )
1
2
3
my $oldfh = select($fh); 
$| = 1; 
select($oldfh);


Das ist nicht nur deutlich komplexer, sondern das muss man auch erstmal nachvollziehen was dort überhaupt passiert.

Ansonsten ebenfalls sehr nett ist die "printflush" methode. Manchmal möchte man etwas ausgeben und den Puffer nicht beachten, aber deswegen muss man nicht gleich komplett im kompletten Programm den Puffer deaktivieren.

Code (perl): (dl )
1
2
3
4
5
6
# STDOUT hat hier Puffer aktiviert
for my ( @list ) {
  STDOUT->printflush('.');
  sleep 1;
}
# STDOUT hat hier Puffer aktiviert


Oder man kann es manuell mit mit "->flush()" flushen. So das man mehrere prints macht und nur zum schluß flusht, wenn es nötig ist.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Vor kopieren warten bis Subroutine abgeschlossen