Strona 1 z 1
[SOLVED][perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 14:13
autor: Goten22
Mam następujące pytanie (w perlu jestem jeszcze nowy), jak zrobić żeby zmienna była wyrazem a nie liczbą, np.
Kod: Zaznacz cały
$komenda = <STDIN>;
if ($komenda == wyraz) {
print "jakiś tekst";
Jeżeli tak zrobię nic to nie daje, ale to działa normalnie.
Kod: Zaznacz cały
$komenda = <STDIN>;
if ($komenda == 1) {
print "jakiś tekst";
Jak zrobić żebym mógł wpisać wyrazy, a nie liczby?
Mam jeszcze drugie pytanie co do opcji sleep. Wydaje mi się, że nie działa ona poprawnie, tzn. chciałbym zrobić takie coś
Kod: Zaznacz cały
print "W";
sleep 1;
print "i";
sleep 1;
itd. itd.
Dałoby mi to efekt takiego jakby pisania. Ale sleep chyba nie jest do tego najlepszy. Może jest jakaś lepsza komenda do tego?
Odp: [perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 14:31
autor: kabanek
co do pierwszego pytania to może spróbuj tak:
nie umiem za dobrze perla więc niech się wypowiedzą mądrzejsi

Odp: [perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 14:39
autor: beluosus
Nie bardzo rozumiem pierwszy problem ale chyba nie wiesz, że perl ma słabą typizację.
Drugi problem - chodzi o buforowanie wyjścia, które w Twoim wypadku trzeba wyłączyć:
Kod: Zaznacz cały
$| = 1; # wyłączenie buforowania wyjścia
sleep(1);
print("a");
sleep(1);
print("b");
sleep(1);
print("c");
Odp: [perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 14:54
autor: leon1313
To na dzień dobry:
http://www.shlomifish.org/lecture/Perl/ ... tring.html
A druga sprawa nazywa się ładnie z anielskiego "non-buffering output" czy jakoś tak.
Realizowany jest poprzez ustawienie zmiennej specjalnej $| na 1:
Kod: Zaznacz cały
#!/usr/bin/perl
use strict;
use Time::HiRes qw(usleep);
$| = 1;
my $microseconds = 500000;
my $one_word="1234567890";
my @one_word_array = split('', $one_word);
foreach (@one_word_array){
print $_ ;
usleep $microseconds;
}
print "\n";
/edit..za długo to pisałem, wyścignęli mnie

Odp: [perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 20:10
autor: el.pescado
Do porównywania napisów służy operator eq a nie ==.
Odp: [perl] sleep i zmienna jako wyraz
: 01 wrz 2009, 21:11
autor: thalcave
Jak kolega wyżej wspomniał eq nie ==, a dwa lepiej wyraz umieścić w " ".
Odp: [perl] sleep i zmienna jako wyraz
: 02 wrz 2009, 19:42
autor: Goten22
Ok, wielkie dzięki za pomoc
