1、环境搭建

—— 解释器 / 编译器

Perl 在 Window 平台上有 ActiveStatePerl 和 Strawberry Perl 编译器。

ActiveState Perl和 Strawberry Perl最大的区别是 Strawberry Perl 里面有多包含一些 CPAN 里的模块,

所以Strawberry Perl 下载的安装文件有 80多M, 而ActiveState Perl 只有20M 左右

地址:

https://strawberryperl.com/

安装完成之后使用命令进行检查:

perl -v / perl -version

—— 开发工具

编写Perl程序好像并没有专门的IDE工具,所以按照以往的Java开发工具,直接上IDEA了

打开插件库,里面搜Perl是有这样一个插件支持的:

之后我们需要配置Perl解释器到IDEA中,在编写Perl程序文件时,IDEA会提示SDK未找到,根据提示让IDEA引导我们去配置Perl

Perl程序文件的后缀名称为xxx.pl

点击添加系统Perl之后,IDEA会自动找到我们之前下载安装好的Strawberry Perl

IDEA还会有一些编写帮助提示,是否使用严格语法,和是否完全提示报错警告

2、基础语法

——1、linux环境开发的注意事项

Linux操作系统下Perl程序文件首行必须声明调用的执行程序

#!/usr/bin/perl

另外Perl程序文件实际上是一个可执行的脚本文件,如同SHELL一样

在Linux编写完成之后需要对该文件进行一个可执行权限的赋予

chmod 0777 xxx.pl 

执行perl脚本

./xxx.pl

——2、简单的示例

在Windows下IDEA中只要配置好解释器,就可以直接编写程序即可

use strict;
use warnings;
use warnings FATAL => 'all';
# 输出 "Hello, World"
print "Hello, world\n";

IDEA似乎没有提供专门的Perl程序运行功能,所以这里我使用IDEA提供的终端窗口进行Perl程序执行

——3、Perl的注释

单行注释类似MySQL的访问工具里的SQL编辑器一样,使用井号即可实现单行注释

# 这是Perl的单行注释

如果是使用多行注释这需要这样:

=pod
这是一个多行注释
这是一个多行注释
这是一个多行注释
这是一个多行注释
=cut

在IDEA的编辑区域看起来很像Java的JavaDoc注释

/**
* 这是Java的多行注释 文档注释
* 这是Java的多行注释 文档注释
* 这是Java的多行注释 文档注释
*/

——4、空格的字符串

执行命令时,命令参数会忽略过多的空格字符

如果是输出的字符串中带有的空格,Perl则会原封不动的输出

use strict;
use warnings;
use warnings FATAL => 'all';
# 输出 "Hello, World"
print "Hello, world\n";
# 也可以使用括号表示
print ("Hello, world\n");

——5、警告提示

警告是对程序存在的潜在异常进行输出提示

Perl原始的警告提示是使用命令参数实现:

-w

w即warnings警告的缩写

在linux环境下,脚本的首位声明加上该参数即可

#!/usr/bin/perl -w

如果是windows,则是

perl -w xxx.pl

在perl5.6版本中,还支持类似JS语法的声明(即一开始的IDEA帮助提示)

use warnings;

查看更为详细的问题描述,可以再声明一句

use diagnostics;

——6、字符输出问题

在perl中支持双引号和单引号两种字符修饰的处理,但是会有区别:

$a = 10;
print "a = $a\n";
print 'a = $a\n';

Perl双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。

a = 10
a = $a\n

对单个的特殊字符的输出显示可以使用\实现

use strict;
use warnings FATAL => 'all';
use diagnostics; $a = 10;
print "\$a = $a\n";

——7、文档输出

$b = <<"EOF";
这是一个 Here 文档实例,使用双引号。
可以在这输如字符串和变量。
例如:a = $a
EOF

【perl】01的更多相关文章

  1. 【LeetCode】01 Matrix 解题报告

    [LeetCode]01 Matrix 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/01-matrix/#/descripti ...

  2. 【hdu3080】01背包(容量10^7)

    [题意]n个物品,有wi和vi,组成若干个联通块,只能选取一个联通块,问得到m的价值时最小要多少空间(v).n<=50,v<=10^7 [题解] 先用并查集找出各个联通块. 这题主要就是v ...

  3. 【u115】&&【t031】 01迷宫

    01迷宫(maze01) Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相 ...

  4. 【C】 01 - 再学C语言

    “C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...

  5. 【算法】01分数规划 --- HNOI2009最小圈 & APIO2017商旅 & SDOI2017新生舞会

    01分数规划:通常的问法是:在一张有 \(n\) 个点,\(m\) 条边的有向图中,每一条边均有其价值 \(v\) 与其代价 \(w\):求在图中的一个环使得这个环上所有的路径的权值和与代价和的比率最 ...

  6. 【整理】01. Fiddler 杂记

    抓手机包步骤: Tools -- Fiddler Options -- Connections (默认)Fiddler listens on port:8888 (勾选)Allow remote co ...

  7. 【OracleDB】 01 概述和基本操作

    实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...

  8. 【perl】企业微信发消息

    https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...

  9. 【perl】simpleHTTP

    类似Python SimpleHTTPServer #!/usr/bin/perl # https://metacpan.org/pod/HTTP::Server::Simple # https:// ...

  10. 【learning】01分数规划

    问题描述 首先分数规划是一类决策性问题 一般形式是: \[ \lambda=\frac{f(x)}{g(x)} \] 其中\(f(x)\)和\(g(x)\)都是连续的实值函数,然后要求\(\lambd ...

随机推荐

  1. 语义化结构标签 多媒体标签 H5新增表单内容

    语义化结构标签: section  更偏向于一个区域类似div(块) article 更偏向于显示内容(块) aside 标签作为article呢绒的辅助板块(块) header 标签做为一个网页头部 ...

  2. SpringBoot系列(四)使用spring-kafka实现生产者消费者demo代码

    一.引入spring-kafka的maven依赖 <dependency> <groupId>org.springframework.kafka</groupId> ...

  3. Vue学习:2.V标签综合2

    接上一篇... V标签综合使用:书架案例 功能: 实现列表的渲染和删除 思路: 使用 v-for 渲染数据列表,并在每个列表项内放置一个绑定了 del方法的"删除"按钮,点击按钮时 ...

  4. 为什么boolean 类型的字段不建议使用is开头?

    对于非boolean类型的参数,getter和setter方法命名的规范是以get和set开头 对于boolean类型的参数,setter方法是以set开头,但是getter方法命名的规范是以is开头 ...

  5. iOS开发流程总结(新坑持续更新)

    [上线前流程] 将测试环境修改成正式环境 修改版本号,而且build version比version多一位,如version设置为1.0.1,那么build就设置成1.0.1.x:这么做的理由是,当你 ...

  6. 为什么Python的多线程是假的呢?

    https://www.zhihu.com/question/23474039/answer/269526476

  7. ZYNQ:PetaLinux工程更新HDF文件的脚本

    PetaLinux工程更新HDF文件的脚本 参考:PetaLinux工程更新HDF文件的脚本 工程师可能同时使用多个Vivado工程,以便测试不同的硬件配置.如果能够让一个PetaLinux工程支持多 ...

  8. 移动WEB开发之 -- 流式布局

    浏览器现状 视口 视口标签 二倍图 手机端和pc端像素比例不一样 物理像素&物理像素比 背景缩放background-size 背景图片二倍图 移动端开发选择 移动端技术解决方案 特殊样式 常 ...

  9. 使用bootstrap-select 动态加载数据不显示的问题,级联数据置为空

    动态加载数据 $.showLoading('数据加载中');//开启遮挡层 $.ajax({ url: "/PickoutStock/GetSendReceive", data: ...

  10. 在audio DSP中如何做软件固化

    在audio DSP中, 软件的code和data主要放在3种不同的memory上,分别是片内的ITCM.DTCM和片外的memory(比如DDR)上.ITCM只能放code,DTCM只能放data, ...