Почему на шеле нормально sleep работает, а на перле непонятно как?
Может я чего не понимаю?
Вот это работает правильно:
--------------------------------------------------------
#!/bin/sh
m=10
s=0
while [ $m -ge 0 ]
do
let s=$s-1
if [ $s -lt 0 ]; then let s=59; let m=$m-1; fi
if [ $s -lt 10 ]; then s1="0$s"; else s1=$s; fi
if [ $m -lt 10 ]; then m1="0$m"; else m1=$m; fi
echo -en "$m1:$s1\b\b\b\b\b"
sleep 1
done
echo
--------------------------------------------------------
А вот это же на перле, ждет незнамо чего:
--------------------------------------------------------
#!/usr/bin/perl
$m=10; $s=0;
do {
printf "d:d%s", $m, $s, "\b"x5;
sleep 1;
$s--;
if ($s<0) { $m--; $s=59; }
} while (not $m<0);
printf "\n";
--------------------------------------------------------
Без слипа работает...
Похожая проблема у меня с процессами.
Вот, например:
--------------------------------------------------------
#!/usr/bin/perl
open (PING, "tcpdump |");
while (<PING>) {
if (/(\d\d:\d\d:\d\d).\S*\s(\S*) > (\S*):/) {
print "$1 - $2 > $3\n";
}
}
--------------------------------------------------------
Выдает строки както порциями, и, если трафик небольшой, может выдать за раз данные за несколько секунд...
Выводит всё, но не вовремя...
Как сделать так, чтобы не было этих задержек с выводом...
Может где в настройках проблема?
У меня ASPLinux 7.3 и RH 7.2