What is meaning of “<<”, “--” in perl and implementation in php?

后端 未结 2 1738
北海茫月
北海茫月 2021-01-23 07:19

I am converting some Perl code to PHP.
However, I do not know much about Perl, so I have to code it with a rough meaning.

And, I do not understand what the below P

相关标签:
2条回答
  • 2021-01-23 08:02

    Nothing very different from PHP actually.

    • << Heredoc, also present in PHP with slight differences:

      echo (<<<"POST_DATA"
      First line
      Second line
      POST_DATA
      );
      
    • -- Variable decrease, as in <?php $a=2; echo --$a;

    Note:

    Of course, inside a Heredoc -- is just text.


    Suggestion:

    If you don't fully understand the Perl, try to run it (it's not evil code).

    my $boundary = 'Nobody-has-the-intention-to-erect-a-wall';
    print(<<"POST_DATA");
    
    --$boundary
    Content-Disposition: form-data; name="num_result"
    Content-Type: text/plain
    
    $num_result
    --$boundary
    Content-Disposition: form-data; name="img"; filename="search.jpg"
    Content-Type: image/jpeg
    
    $image
    --$boundary--
    POST_DATA
    

    Will yield:

     
    --Nobody-has-the-intention-to-erect-a-wall
    Content-Disposition: form-data; name="num_result"
    Content-Type: text/plain
    
    
    --Nobody-has-the-intention-to-erect-a-wall
    Content-Disposition: form-data; name="img"; filename="search.jpg"
    Content-Type: image/jpeg
    
    
    --Nobody-has-the-intention-to-erect-a-wall--
    
    0 讨论(0)
  • 2021-01-23 08:02
    $req2->content(<<"POST_DATA"); #what means this?
    

    The <<"POST_DATA" starts a HERE document, which is essentially a long string. The double quotes "" tell Perl to do string interpolation. That means that variables inside the string will be replaced with their content. The string ends when the parser encounters the delimiter, which in this case is the string POST_DATA.

    The -- you are referring to is not an operator. It's used inside of the string. The program sends a multipart/formdata form over HTTP. Look at RFC 7578 if you are interested in the technical details. Essentially, each part of the request body represents one document. It can be multi-line and contain lots of information. The boundary can be set in the HTTP headers, and is typically a long, random string that would not appear in any of the body parts. See this answer for a more detailed explanation.

    0 讨论(0)
提交回复
热议问题