Hello,

Your program reads data from STDIN. The line you mentioned "$string = <STDIN>;" works if your input is a single line. For multiline input, you need to devise a way to stop reading and start processing.

There are many ways to do this:

  1. Put the entire input in one line:
    Example: Use
    Abdulaziz Ghuloum;;myemail@mycompany.com;;Subject Here
    instead of
    From: Abdulaziz Ghuloum
    Email: myemail@mycompany.com
    Subject: Subject Here
    
    This way, your code can easily extrace all message components. This method only works if the message is small and if you can always find a unique separator (";;" in the example I provided).

  2. Give the number of lines in the header, just like how http supplies Content-length header or email messages give the number of lines in the header.
    Your script should read the headers and check for the message length header and then, after reading the headers, reads in a loop until it reads the whole message. This is the recommended way for text or binary messages.

  3. Decide on a terminating sequence to finish reading and start processing. Usually this sequence is a blank line. The client sends a "\n" after sending every "line\n" and the server, after chomping the line, does "last unless length". This is the recommended method for text messages.
Remember that simply reading from STDIN in a list context will cause your program to appear hanging as it blocks waiting for more input.

Undefining $/ should cause you trouble as your program will read waiting for EOF which might not happen unless the client closes writing to the socket.

Hope this helps,,,

Aziz,,,


In reply to Re: inetd server problem by abstracts
in thread inetd server problem by evilstevel

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.