Perl语法<$ VARIABLE>是什么意思?

Die*_*dia 0 sockets perl

只是找不到这个语法(<$SOCKET>)的作用,虽然我猜它是变量中对象的某种默认评估或行为.

我试图测试我的Apache服务器(在安装mod_evasive模块之后)与这个假定的DoS探测器(这进入100次循环),但它总是返回响应400 Bad Request.试图对代码进行decypher,我已经陷入了下面的注释行.

use IO::Socket;
use strict;

my($response);
my($SOCKET) = new IO::Socket::INET( Proto   => "tcp",
                                  PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET / HTTP/1.1\n\n";

$response = <$SOCKET>; ## What are those < > signs???

print $response;
close($SOCKET);
Run Code Online (Sandbox Code Playgroud)

然后我的主要兴趣是能够进行测试,所以我首先需要知道为什么我得到400错误代码来修复它.

而且,BTW,为了好奇,我想了解<$SOCKET>语法含义,因为我无法在任何地方找到它.

bri*_*foy 6

< >(也被称为"钻石经营者")是一个速记readline.括号内的东西提供输入行.这可能是文件句柄,管道,套接字或其他类似的东西.在您的情况下,它$SOCKET是存储您创建的套接字的变量.

调用<$SOCKET>从该输入读取下一行.

虽然有一点技巧.在其他一些情况下,这< >是一个简写glob.如果角度内的东西看起来像一个glob模式,则< >返回与该模式匹配的文件列表:

 my @files = <*.txt>;
Run Code Online (Sandbox Code Playgroud)

这可能是你看到的一些旧语法; 我更喜欢拼出来:

 my @files = glob( '*.txt' );
Run Code Online (Sandbox Code Playgroud)