Leser: 20
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 36 37 38 39 40 41 42 43 44 45
#!/usr/bin/perl -w # Requires Device-Serial per module. use Device::SerialPort 0.05; my $RS232 = "/dev/cua00"; my $return; my $device = ""; my $value = ""; my $dummy; # Constructor & Basic Values my $ob = Device::SerialPort->new ($RS232) || die "Can.t open $RS232:$!"; $ob->baudrate (9600) || die "fail setting baudrate"; $ob->parity ("none") || die "fail setting parity"; $ob->databits (8) || die "fail setting databits"; $ob->stopbits (1) || die "fail setting stopbits"; $ob->handshake ("none") || die "fail setting handshake"; $ob->dtr_active (1) || die "fail setting dtr_active"; $ob->write_settings || die "no settings"; print "device loaded"; system "echo $$ > ./PIDrec"; for ($dummy=1; $dummy<11; $dummy++) { $return = $ob->input; sleep (0.2); unless ($return eq "") { print $return; ($device, $value) = split (/:/, $return, 2); print "New State on $device, State: $value\n"; system "echo $value > ./sl$device"; system "echo New State on $device, State: $value >> ./log"; $return = ""; } if ($dummy>7) { $dummy=0; } } undef $ob;
select undef, undef, undef, 0.2;
1 2 3 4 5 6 7 8 9 10
LOOP: while ( 1 ) { # was soll sich ewig wiederholen? ... # 2 Sekunden schlafen sleep 2; # Abbruch der Schleife bei bestimmter Bedingung last LOOP if $condition; }
2009-09-04T10:51:45 Linuxer[...]
2009-09-04T13:26:08 sid burn[...]
z.B. kann man nicht mitten in einem do..loop mit "last" ausbrechen, weil Perl es gar nicht als Schleife ansieht. Ich meine es gab da noch mehr Probleme mit einer do..while Schleife.
[...]
1 2 3 4 5
my $condition = ...; while ( 1 && !$condition ) { # tu was # verändere $condition }