perl学习笔记16 z

perl中pack函数的用法 pack接收一个普通 Perl 数值的 LIST 并且根据 TEMPLATE 把它们转换成一个字节串并且返回 该字串。它的用法如下              pack TEMPLATE, LIST         其中,TEMPLATE代表模板,模板由字符后面跟数字组成,数字代表每个字母后面都可以跟着一个数字,表示 count(计数),解释成某种形式的重复计数或者长度, 具体情况取决于格式。除 阅读详情

Web自动化和连网

1.  LWP概述

Ø         HTTP:Request请求对象包含了一些用于描述客户对服务器的请求的信息。它所包含的属性有:method(方法)、URL(统一资源定位)、header(标头)和content(内容)。HTTP:Request有4种请求方法:get、put、post和head。URL时所请求的URL地址。标头是一组健/值对,它提供了关于请求的附加信息。内容包含了作为请求的一部分、由客户发给服务器的数据。

Ø         当服务器收到请求后,他会建立一个用于响应客户的HTTP:Response对象。HTTP:Response对象有4种属性:响应码(code)、响应消息(message)、标头(headers)和内容(content)。响应码是请求结果的状态指示器。它表明请求成功或者发生了错误。响应消息是与响应码对应的字串信息。标头包含了关于响应的附加信息,提供了用户所使用的、用来决定如何处理响应内容的描述。内容是有关响应的一些数据。

Ø         通过一个称为用户代理(User Agent)的对象来完成把请求对象转变成响应对象的。在Perl中,该用户代理是类LWP:UserAgent的一个实例。在一般的Web交互中,他的作用相当于一个浏览器,他处理来自请求的信息,并创建相应的响应对象。响应对象定义了要返回给用户代理(一般是一个Web浏览器)的响应信息。用户代理主要属性有:延时(timeout)、代理名城(agent)、用户邮件地址(from)和认证书(credentials)。延时定义了用户代理在超时发生前的最长等待时间。代理名称定义了所使用的用户代理的名字。当用户代理与网络进行会话时,就会用到这个名字。用户邮件地址也就是正在使用web浏览器的用户的邮件地址。认证书包含了一次成功响应所需要的用户名或密码。

 

 

2.  LWP命令

Ø         用户代理的request方法用于请求定义的文档。该方法调用的结果储存在一个HTTP::Response对象中。

my  $agent = new  LWP::UserAgent();

my  $request = new  HTTP::Request ( ‘GET’ = $url );

my  $response = $agent -> request ( $request );

 

Ø         HTTP::Response对象的is_success方法用来判别请求是否成功。如果请求成功,就调用HTTP::Response对象的content方法,输出响应。如果请求不成功,就调用HTTP::Response对象的status_line方法,输出错误信息。这个方法将从对象中返回状态代码和响应消息。

if ( $response -> is_success () ) {

       print ( OUT  $response -> content () );

}

Else {

       print ( OUT  “Error:” . $response -> status_line() . “ /n”);

}

 

Ø         在HTTP::Request对象中的POST请求方法类似于HTML单元素中post方法。

$request = new HTTP::Request ( ‘POST’, $url );

 

Ø         HTTP:Request对象中的content_type方法用于设置请求的内容类型(content type)。这决定了HTTP协议如何处理这个请求。

$request -> content_type ( ‘ application/x-www-form-urlencoded ’ );

 

Ø         HTTP::Request对象的content方法定义了要传送给CGI程序的数据。Content应该是一个将要发送给post请求的字串。

 

Ø         HTTP::Request对象的as_string方法将以文本输出所返回的响应,包含了content方法所无法输出的一些附加信息。下例中将响应输出到文件句柄OUT所指向的文件中。

Print ( OUT  $response -> as_string () );

Ø         head请求只返回请求的标头(headers)信息。标头包括对象类型、大小和存活时间这样的信息。当需要知道文档是否存在时,这是非常有用的。

 

3.  LWP::Simple模块

Ø         简单的LWP功能可以从LWP::Simple模块中获取,它提供了对LWP的过程调用接口,而不是以前的面向对象的方法。

Ø         LWP::Simple模块的getprint函数,他用来检索一个web网页并将其输出到一个文件句柄STDOUT(标准输出)。函数getprint返回了HTTP响应代码。

my  $status = getprint ( $url );

Ø         LWP::Simple模块中的get函数检索到一个web网页,并将它的内容(content)储存在一个标量中。

my  $page = get ( $url );

Ø         LWP::Simple模块中的getstore方法用来检索一个Web页面并将它储存在一个文件中。同样,getstore函数也返回HTTP响应代码。

$status = getstore ( $url, “page.txt”);

 

4.  HTML解析

Ø         HTML::TokeParser模块和LWP对于从web站点提取文本是非常有用的。

Ø         TokeParser构造函数的参数接收一个字串、一个字串引用或一个文件句柄。如果他接收一个字串,Perl会把它当成一个文件名来打开,从中读取数据。如果他接收一个字串引用,perl会把它当成一个数据引用来解析。如果他接收一个文件句柄,TokeParser对象将尝试从该文件句柄所指向的文件中读取数据。

Ø         TokeParser对象的get_token方法从解析文档中返回一个标志(token)。

Ø         标志是数组引用,他的5种可能的类型是:开始标志(start token)、结束标志(end token)、文本标志(text token)、注释标志(comment token)和声明标志(declaration token)。

Ø         一个开始标志(token)就是一个HTML开始标记(tag)。在一个开始标志的数组中,第一个元素是“S”,下一个元素保存着标记名,接下来是一组标记变量,在下一个是包含每个标记属性的散列,最后一个元素是原文。

Ø         一个结束标志的数组包含3个元素:“E”、标记名和原文(Original  Text)。

Ø         文本标志、注释标志和声明标志数组包含两个元素:一个代表类型的字符和标志中的文本。文本标志、注释标志和声明标志的类型分别是“T”、“C”、“D”。

 

5.  高级联网入门

所有的网络通讯是通过套接字(Socket)来完成的。套接字是通讯的端点。一个可以通讯的连接包括两个套接字。数据可以通过数据流和数据报的形式来传递。数据流提供了一种双向的、可靠的、有序的通讯传输方式。数据报的连接是比较不可靠的,在数据报的连接中,信息是通过一个小小的数据包传输的。数据报不如数据流可靠,但数据报需要较少的资源,因为它不需要在两台计算机之间建立永久的连接。所有连接需要两个套接字,一个由服务器程序维护,一个由客户端维护。

6.  传输控制协议TCP

Ø         通常一个服务器应用安装在一台用于监听连接的计算机上(如等待web浏览器连接的web服务器)。客户程序必须知道她所要连接的服务器的地址。

Ø         为了标准化网络中计算机间的会话,制定了许多协议。通常,一个邮件应用与两个不同的服务器进行通讯。它通过与POP服务器会话来接收用户邮件,与SMTP服务器会话来发送用户邮件。

Ø         主要的面向连接的因特网协议是传输控制协议(TCP)。可以使用IO::Socket模块创建一个客户/服务器的聊天程序。使用这个模块容易的定义服务器的位置 。

my  $socket = new IO:Socket::INET (

PeerAddr => $host,

PeerPort => $port,

Proto => ‘tcp’ ,

Type => SOCK_STREAM )

or die ( “Cannot  connect to $host:$port:$@ /n”);

 

Ø         端口号定义了服务器从哪里等待和接收用户的连接。

Ø         可以使用模块IO::Scoket来创建一个IO::Scoket::INET对象。这是一个执行因特网连接的IO::Scoket对象。

Ø         传递给构造函数4个参数:聊天服务器的IP地址(PeerAddr);为TCP聊天程序所设置的远程计算机端口(PeerPort);通讯协议(proto)以及用于判别数据流链接或数据报文连接的连接类型(Type)。

Ø         行缓冲特殊变量 $| 定义了缓冲功能是否应当关闭。当$|定义为1时,表示缓冲功能应当关闭。

Ø         IO::Scoket::Net的参数LocalPort定义了服务器上的监听端口。

Ø         Type参数定义了创建连接的类型。

Ø         Listen参数定义了服务器开始不理新连接客户前,服务器上排队等待连接的用户数。对于服务器,Listen是必须定义的。

Ø         类IO::Scoket::INET中的accept方法一直等待到有一个客户尝试访问他。一旦一个客户确实访问上服务器。服务器就建立起一个连接。

my  $server = new IO::Socket::INET (

                     LocalPort => $port,

Type => SOCK_STREAM,

Listen => 10 )

or  die ( “ Cannot be a server on $port : $@ /n”);

                                   local  $| = 1;

                                   my  $client = $server -> accept();

                                   my  $response = < $client >;

 

7.  简单邮件传输协议SMTP

Ø         如果要发送邮件就需要一个SMTP服务器。Perl提供了一个用于处理STMP传输的模块,它就是Net::SMTP模块。

Ø         第一个传送给构造函数的参数必须是一个合法的SMTP服务器地址。这个构造函数在一个步骤内创建对象并连接服务器。

Ø         可以用可选参数来发送用户的邮件域(hello)、连接超时(Timeout)和一个判别调试是否应该关掉的指示器(Debug)。

Ø         可以使用mail方法来创建一条新的邮件信息,它把用户的邮件地址作为参数。使用NET::SMTP中的to方法来定义邮件的接收者。Data方法开始传送邮件消息数据。一旦传送开始,可以通过datasend来发送信息。为了完成信息的传送,要使用dataend方法。Net::SMTP的quit方法关闭连接。

my  $smpt = new Net::SMPT( “$server”,hello => “server” )

       or die ( “ Cannot send e-mail : $! ”);

 

$smtp -> mail( “$my_address”);

$smtp -> to ( “$address”);

 

$smtp -> data();

$smtp -> datasend ( “From: $from /n”);

$smtp -> datasend ( “ To : $to /n”);

$smtp -> datasend (“ Subject: $subject /n /n”);

$smtp -> datasend (“ $message /n”);

$smtp -> data();

$smtp -> quit();

 

8.  邮局协议 POP

Ø         邮局协议POP也是常见的一种协议,它便于从远程服务器上存储和检索邮件。POP服务器允许读取、阅读、存储和删除邮件。

Ø         Mail::POP3Client模块可用来读取邮件

Ø         Mail::POP3Client模块中的Count方法返回邮箱中的消息条数。

Ø         Mail::POP3Client模块中的Head方法返回消息标头,这些消息标头包含了关于邮件中所有的相关信息。

my  $pop = new Mail::POP3Client (

              USER => $user,

              PASSWORD => $password,

              HOST => $server ) ;

my  $message = $pop -> Count();

 

9.  查找万维网

Ø         WWW::Search模块提供了一系列查找引擎的接口。这个模块为好几个模块所继承和扩展,使其于各种查找引擎的交互功能成为可能。

Ø         为了定义一个查询,把用户输入的原始查询作为一个参数传给WWW::Search模块中的escape_query方法。这就把简单的语句转换成适合WWW::Search模块的HTML编码语句。

Ø         Native_query方法接收escape_query方法返回至,开始查询。

Ø         为了从特定的查找引擎中取得结果,调用WWW::Search对象中的next_result方法。


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
perl 通过信号控制执行超时 DBI connect('//192.168.137.1:1521/','',...) failed: ORA-12170: TNS: 连接超时 (DBD ERROR: OCIServerAttach) at check_oracle.pl line 16.Cannot conenct db: ORA-12170: TNS: 连接超时 (DBD ERROR: OCIServerAttach) 阅读详情

相关推荐

Mac无管理员权限安装NVM全攻略(附国内镜像加速)

本文详细介绍了在Mac电脑无管理员权限的情况下,如何通过Git克隆方式安装Node版本管理工具NVM,并配置国内镜像源以加速下载。攻略涵盖环境检查、安装步骤、Shell环境变量配置、镜像加速设置以及常用命令和常见问题解决方案,帮助开发者绕过权限限制,高效管理Node.js版本。

weixin_29296241的博客 492

perl 小技巧

1、``: 执行命令 my @arr = `ls`;  #执行命令,为`非' print "total: ".@arr."\n"; 2、use Cwd; #getcwd.获取当前路径 print  "CurrentPath:".getcwd."\n"; 3、use Time::HiRes qw(gettimeofday usleep); my ($start_s

gaoguide2015的博客 500

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 868

关于perl中的sleep函数

关于perl中的sleep函数     sleep EXPR sleep这个函数令脚本睡眠 EXPR 秒,如果没有 EXPR 则是永久睡眠,并且返回睡眠的秒数。 你可以通过给该进程发送一个 SIGALRM 的方法来中断睡眠。在一些老式系统里,它可能比你要求的描述整整少睡一秒,具体情况取决于它是如何计算秒的。大多数现代的系统都是睡足秒数。不过,在这些 系统上它们很有可能睡眠的时间要长一些

中关村村长的专栏 1万+

Neurocomputing 投稿指南

Generation Information:选择论文所属领域。上传附件(利益声明,手稿,摘要)审稿人偏好:可以选择期待的审稿人。

qq_41174671的博客 2万+

手把手教你搭建三端口DC-DC变换器(含Boost+Buck电路实战)

本文详细介绍了如何从零开始搭建三端口DC-DC变换器,涵盖Boost和Buck电路的硬件设计、元器件选型、电路板布局、焊接技巧、控制系统设计与调试等关键步骤。通过实战案例和优化建议,帮助工程师避开常见陷阱,提升系统效率和稳定性,适用于光伏、储能等电力电子应用场景。

x8y9z0的博客 932

Perl学习笔记(1)——基础语法

Overview Perl简介 Perl(Practical Extraction and Report Language 实用摘录与报表语言),具有高级语言强大的能力和灵活性,可以提供脚本语言(如sed和awk)的所有功能,擅长文本的处理。 Perl的安装 Linux系统:(一般默认已经安装了perl解析器,不需要再安装) tar zxvf perl-XX.tar.gz 找到perl存放目录,删除原始配置信息:rm -f config.sh Policy.sh 使用默认安装,sh Cogfigure -

zgezi的博客 1255

移动端UI自动化测试新框架Maestro:声明式语法与实战指南

UI自动化测试是保障移动应用质量的关键环节,其核心原理是通过脚本模拟用户操作,对应用界面进行自动验证。传统命令式框架(如基于Selenium WebDriver的Appium)虽然控制粒度细,但脚本编写和维护成本较高。声明式测试框架则通过描述“做什么”而非“怎么做”,显著降低了技术门槛和维护复杂度,其技术价值在于提升测试脚本的可读性、编写效率与跨团队协作能力。在移动端测试领域,这尤其适用于需要快速验证核心业务流程、进行冒烟测试和回归测试的场景。本文聚焦的**Maestro框架**,正是这一理念的杰出实践。它

weixin_32921023的博客 713

Perl学习笔记—100个知识点

perl的常见知识点

W1Z1Q的专栏 1480

win10下Miracast无线投屏使用教程及异常解决方案(超详细)

文章目录一、什么是Miracast?二、主流的无线投屏技术有哪些特点?三、如何查看自己的win10电脑是否支持Miracast无线投屏功能?四、win10电脑如何使用Miracast无线投屏功能? 一、什么是Miracast? Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的3C设备(如智能手机、电视、投影、电脑等...

帅气的小白的博客 44万+

零基础实战:云开发家政维修小程序搭建指南

欢迎来到这本关于构建家政维修小程序的电子书!在当今数字化的浪潮中,线上服务已成为我们生活中不可或缺的一部分。从点餐购物到居家维修,人们越来越习惯通过指尖轻点来解决各种需求。正是基于这样的背景,我们希望通过这个系列,手把手地带领大家从零开始,搭建一个功能完备、体验流畅的家政维修平台。这不仅仅是一本技术教程,更是一次将想法变为现实的探索之旅。我们将深入浅出地讲解如何运用云开发等现代技术,实现从用户下单、支付,到客服派单、工人接单,再到订单完成和权限管理等一系列核心业务流程。

低代码布道师的博客 3432

[Perl]Perl匹配非空白字符[^\s]

Perl匹配非空白字符 ​​​​​ 在Perl中,[^\s]代表非空白符。 [^\s]+表示一次或多次匹配非空白符。 ^在括号[]外时表示开始,即行首。 ^在括号[]内时表示将第一位取反,所以\s是空白,在括号内[^\s]就是非空白。 ...

元直的博客 5744

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

Perl网络编程 socket z

Perl网络编程 Perl很强大,不仅能开发CGI方面的程序,还可以用它进行网络程序的开发。Perl使网络编程更简单,开发速度更快。目前Perl应用范围除了系统维护,程序运行时配置CGI(现在应用的很少了),便是用来进行hacker脚本的编写。Perl脚本的特点是 “简练而强大”,非常适合写Exploit。在网络上可以找到很多国外hacker用Perl写的Exploit程序,而在国内就少了很多

726

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Perl学习笔记(2)——模式匹配和正则表达式

模式匹配及正则表达式模式匹配模式匹配的特殊字符字符集模式匹配操作符锚位绑定操作符 =~模式串中的变量内插捕获变量用正则表达式进行文本处理文本替换split操作符join函数列表上下文中的m//在命令行执行Perl模式匹配和正则表达式的例子Perl 模式匹配 模式是指在字符串中寻找特定序列的字符或者说是一个 匹配(或不匹配)某字符串的模板,模式由反斜线包含。而一个** 正则表达式**,就是 用某种模式去匹配一类字符串的一个公式。 要进行复杂的模式,就需要借助于元字符和量词。 模式匹配的特殊字符 字符

zgezi的博客 3548

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

转utf-16格式的码表至utf-8,perl脚本

<br /><br />#!/usr/bin/perl -w<br />use strict;<br />my %key_char;<br />open(F2,'>:encoding(utf-8)',"zhengma_table_2.txt");<br />open(F,'<:encoding(utf-16)',"zhengma_table.txt");<br />while(<F>){<br />    if(m/^([^a-z ]*)(.*)$/){<br />my $char=$1;<br />my

tmjdone的专栏 1539

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Perl 数组

Perl 数组一个是存储标量值的列表变量,变量可以是不同类型。数组变量以 @ 开头。访问数组元素使用。

lingjierui的博客 1085

Perl 数组@

Perl 数组一个是存储标量值的列表变量,变量可以是不同类型。 数组变量以 @ 开头。访问数组元素使用$ + 变量名称 + [索引值]格式来读取,实例如下: 实例 #!/usr/bin/perl @hits = (25, 30, 40); @names = ("google", "runoob", "taobao"); print "\$hits[0] = $hits[...

weixin_30679823的博客 556

perl脚本——基本语法

一、操作符 1,算数操作符 **(幂) 求幂(**),结果不能超出数的范围。当指数为小数时,底数不能为负数,例如:25**1.5=125,(-25)**1.5=?(不成立) 2,整数比较符 大于 ==等于 =大于等于 !=不等于 比较,返回1,0,or-1 批注:跟C,php语言一致 3,字符串比较符, [img]http://dl.iteye.com/upload...

zccst的专栏 1511

perl中pack函数的实例

examples of pack

Mark.Yin 的专栏----人民需要无线 1568

perl: scalar

<br />1.对于整数型literal,可以使用下划线分开,但其实还是同一个值,如:<br />6987654321<br />698_765_432_1<br />代表同一个literal值。<br />对于八进制和16进制数也是同样使用这种方法。<br /> <br />2.perl对于字符串没有长度的限制<br />但所用字符需为ASCII码的32—126之间的字符<br /> <br />3.单引号和双引号的区别:<br />单引号内除了单引号和反斜线外,其他字符都保持原意,即换行符也保持原意。另

zhangbg的专栏 9152

perl 语言

输出 I HATE STUDYING...$str =~ tr/a-z/A-Z/;# 转化 Example。

hxsln11的博客 313

Perl复习

Perl 基础知识

qq_46153642的博客 525
上一篇: perl学习笔记15 z
下一篇: perl学习笔记18 z
KataDoc360
博客等级 码龄18年 65粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值