Thread was ist an der syntax falsch?? (61 answers)
Opened by grey1987 at 2007-11-26 12:25

Linuxer
 2007-11-27 10:54
#103095 #103095
User since
2006-01-27
3881 Artikel
HausmeisterIn

user image
grey1987+2007-11-27 09:21:23--
ok ok, anscheinend ist die aufgabe nicht in perl lösbar.


Diese Aussage bezweifel ich. Aber mir wird aus Deinen Beiträgen nicht wirklich klar, wo jetzt letzten Endes Dein Problem liegt. Ein klares Defizit scheint mir im logischen Ablauf vorzuliegen. Aber da ich Dein Problem kaum erkenne und keinen passenden Server zur Hand habe, kann ich momentan auch nichts nachvollziehen. Nur weil Du es mit Perl nicht hinbekommst, heisst das nicht, das Perl das nicht kann.



grey1987+2007-11-27 09:21:23--
hab jetzt aber noch ne andere frage.

wenn ich jetzt in meinem code ein if-Abfrage machen will:
nach dem hier

Code (perl): (dl )
1
2
3
4
5
getlinefromsocket ($socket);
#hier soll die Abfrage stehen
#zb.
#if (???? eq "ACK")
# mach das und das....

was geb ich denn jetzt bei den Fragezeichen ein??


Wo speichert getlinefromsocket() denn die gelesenen Daten? In $buffer, oder nicht. Was machst Du am Ende mit $buffer? Nichts. Also wird $buffer entsorgt und der Inhalt von $buffer geht verloren (da $buffer innerhalb der Subroutine definiert wurde).

Sauberer wäre z.B.:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sub getlinefromsocket {
   my $socket = shift;
   my $buffer, $char;

   my $max_buf_size = 3;

   # tu was mit $buffer
   while ( $socket->recv( $char, 1 ) ) {
      last if ( $char eq ' ' );
      $buffer .= $char;
      last if ( length $buffer == $max_buf_size );
      # wenn mit last die Schleife verlassen wird, wird das print nicht ausgeführt!
      print $char;
   }

   # reiche den gefüllten Buffer weiter
   return $buffer;
}


Im restlichen Code kannst Du es dann so benutzen:
Code (perl): (dl )
1
2
3
4
5
my $line = getlinefromsocket( $socket );

if ( $line eq 'ACK' ) {
   #tu was
}

meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread was ist an der syntax falsch??