Schrift
[thread]6910[/thread]

sleep(); verständnissproblem...

Leser: 2


<< >> 9 Einträge, 1 Seite
J-jayz-Z
 2005-04-19 14:36
#53954 #53954
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich hab mir ein script geschrieben, das sleep(); nutzen soll, allerdings geht das nicht ganz so, wie ich es vor hatte...
Ich dachte, das mein Beispiel H ausgibt, eine sekunde wartet, a ausgibt, wieder ne sekunde wartet, l ausgibt, wieder ne sekunde warten, nochmal l ausgibt und ne sekunde wartet und dann o ausgibt, nach einer sekunde.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;

print "H";
sleep(1);
print "a";
sleep(1);
print "l";
sleep(1);
print "l"
sleep(1);
print "o";


allerdings wartet das script 4 sekunden und gibt dann Hallo auf einmal aus. Kann mir jemand sagen, wie ich das realisieren kann und mir erklären, wieso sleep(); das nicht macht?

thx
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
renee
 2005-04-19 14:45
#53955 #53955
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
füge $| = 1; nach use warnings; ein...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-04-19 14:47
#53956 #53956
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
... und nach dem zweiten print "l" noch ein Semikolon ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
J-jayz-Z
 2005-04-19 14:52
#53957 #53957
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, gut. Okay....Newbie halt :D
Kannst du mir erklären, wieso das nicht geht?
Im Originalscript hab ich das Semikolon auch nicht vergessen:p
Also in dem in dem ich es getestet hab. Was macht den
$| = 1;
? ? ?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
renee
 2005-04-19 14:55
#53958 #53958
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
aus perldoc perlvar:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
       HANDLE->autoflush(EXPR)
$OUTPUT_AUTOFLUSH
$| If set to nonzero, forces a flush right away and
after every write or print on the currently
selected output channel. Default is 0 (regardless
of whether the channel is really buffered by the
system or not; $| tells you only whether you've
asked Perl explicitly to flush after each write).
STDOUT will typically be line buffered if output
is to the terminal and block buffered otherwise.
Setting this variable is useful primarily when you
are outputting to a pipe or socket, such as when
you are running a Perl program under rsh and want
to see the output as it's happening. This has no
effect on input buffering. See "getc" in perlfunc
for that. (Mnemonic: when you want your pipes to
be piping hot.)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-04-19 14:57
#53959 #53959
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ohne das $| == 0 (default) wird immer bei einem Zeilenumbruch ausgegeben, mit dem $| != 0 wird bei jedem print ausgegeben...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
J-jayz-Z
 2005-04-19 23:55
#53960 #53960
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Genau das, was ich suchte. thx! ! !
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Strat
 2005-04-20 13:44
#53961 #53961
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du viel text auf STDOUT ausgibst, macht das $|=1; das programm allerdings langsamer, weil da der Buffer fuer STDOUT abgeschaltet wird. Falls du das nicht willst, kannst du alternativ mit print auch nach STDERR schreiben (der ist immer ungebuffert):
Code: (dl )
1
2
3
4
for (1..10) {
 print STDERR ".";
 sleep(1);
}
\n\n

<!--EDIT|Strat|1113990292-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2005-04-21 11:55
#53962 #53962
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
oder $| nur local in einem begrenzten Gültigkeitsbereich ändern
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 9 Einträge, 1 Seite



View all threads created 2005-04-19 14:36.