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. C#.NET 循环字符串 V20231123

    C#.NET 循环字符串 V20231123 public static bool IsIllegalOutTradeNo(string OutTradeNo) { foreach (char ite ...

  2. 5 分钟小工具:使用 dive 分析 docker 镜像

    需求 拿到一个镜像之后,我想知道: 分层查看镜像里都有哪些文件 各层使用了什么命令构建的这个镜像 镜像里比较大的文件有哪些(可能需要优化) dive 工具介绍 dive 工具可以做这些分析.dive ...

  3. FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)

    ​记录下FFmpeg的学习笔记目录,完整的FFmpeg开发实战内容详见<FFmpeg开发实战:从零基础到短视频上线>一书. 下面是补充的FFmpeg开发笔记内容目录,主要是对<FFm ...

  4. [一句话说iOS]dispatch如何造成死锁

    dispatch_sync执行了两件事:把代码块放入指定线程的任务队列中.堵塞当前线程直到代码块执行结束,如果出现了堵塞的线程和代码块所在的线程为同一线程的话,这个时候代码无法在此线程执行继续下去,即 ...

  5. 在Python中输出当前文件名和行号

    在Python中输出当前文件名和行号 用 inspect 库 info = inspect.currentframe() print('DEBUG!! ',info.f_code.co_filenam ...

  6. 记录liunx服务器和docker时区修改

    记录服务器和docker时区修改 前言 我的博客是部署在docker里面的,然后我发现评论和留言的时间和北京时间是有差别的,相差8个小时,然后发现是因为容器中的时区设置与服务器是不一致的,所以需要设置 ...

  7. 一次STM32进入HardFault_Handler 的解决情况

    STM32进入HardFault_Handler调试 --- title: STM32进入HardFault_Handler调试 date: 2020-06-18 10:26:48 categorie ...

  8. Linux 环境编程:errno的基本用法

    背景 error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误.若为0,则无错误,其它值均表示一类错误. errno只在函数返回错误时才有 ...

  9. 第一个Vert.x程序(基于Gradle7)

    这里跑一下Vert.x中文站的入门程序(以后就不写那个点了,或者干脆写vx)简易教程.这个程序非常简单,为啥还写一下呢?因为里面的依赖有点老,已经不能直接成功启动了. 搭建项目 通过IDEA创建Gra ...

  10. js 获取年、月、周、当前日期第几周、这月有那几周

    查看当前日期是第几周:https://wannianli.tianqi.com/today/zhou/ //获取完整的日期 var date=new Date; var y = date.getFul ...