Hm, Klappt irgendwie nicht ganz, ich hab mir auch die Doku zum Time::HiRes angesehen, das Beispiel dort ist fast genauso wie deines, ich weiß nicht so recht woran es hakt. Soweit ich das sehen kann, wird die print_line_sub auch garnicht erst aufgerufen, wo hab ich da möglicherweise gepfuscht?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
our $debug = 1;
my $timer = 10;
sub debug
{
if ( $debug == "1" )
{
my $text = shift;
print $text;
}
else
{
return 0;
}
}
my $prline;
my $print_line_sub = sub {
debug ("timer triggered, running print_line_sub\n");
print $prline;
};
# run command and capture output (reporting to backend)
# init timer
$SIG{VTALRM} = $print_line_sub;
setitimer(ITIMER_VIRTUAL,1,$timer);
open(my $cmd,'-|',"./test.script");
my $line="";
while ($line = <$cmd>)
{
$prline = $line;
}
und zur Sicherheit, falls es daran liegt, noch mein testscript:
#!/bin/bash
START=0
END=1325
COUNTER=0
while [ $COUNTER -lt $END ]; do
PERC=$(echo "scale=2; $COUNTER / $END * 100" | bc)
echo "The counter is $COUNTER ($PERC %)"
let COUNTER=COUNTER+1
sleep 0.1