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 HTTPS 双向证书 请求被中止: 未能创建 SSL/TLS 安全通道。

    请求被中止: 未能创建 SSL/TLS 安全通道. 用mmc 给私钥证书添加Everyone 的权限.

  2. MySql 表数据的增、删、改、查

    数据表的增.删.改.查 前言 在学习 MySql 一定少不了对数据表的增.删.改.查,下面将详细讲解如何操作数据表. 前面已经建好了表 customer 列表如下: 插入数据 插入数据可以使用 INS ...

  3. mysql 判断字符串结尾

    mysql 判断字符串结尾 CREATE TABLE `tbl_str` ( `id` INT DEFAULT NULL, `Str` VARCHAR(30) DEFAULT NULL) INSERT ...

  4. C++操作符重载(operator)

    c++操作符 例如-=+*/等,甚至包括,<<等都是操作符.c++特色之一就是给予完全重构和重载操作符(Java不可以,c#操作部分). 例子入手 假设一个结构体,定义如下 struct ...

  5. pytest执行_allure报“AttributeError: module 'allure' has no attribute 'severity_level'”

    背景: 一个大项目A,需要项目B作为源码,即pycharm的 source_root 问题: 项目B,执行pytest.main([pytest命令]),控制台报错"AttributeErr ...

  6. Oracle常用命令收藏

    查看数据库名 SELECT t.NAME FROM V$DATABASE t; 查看实例名 SELECT t.INSTANCE_NAME FROM V$INSTANCE t; 查看SID select ...

  7. python爬虫-xpath基础

    # 准备一个html格式文档 doc = ''' <div> <ul> <li class="item-0"><a href=" ...

  8. ubuntu16.04 安装 eclips c/c++

    前言 最近需要在ubuntu16上使用eclips编译c,尝试了apt安装和官网最新包安装甚至应用商店安装,效果都不太理想,现在把我的安装方法记录一下. 正文 !!!前提,已经自己配置好了java8的 ...

  9. Linux 提权-SUID/SGID_1

    本文通过 Google 翻译 SUID | SGID Part-1 – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释 ...

  10. Vue 的父组件和子组件生命周期钩子函数执行顺序?

    https://www.cnblogs.com/thinheader/p/9462125.html 参考连接 Vue 的父组件和子组件生命周期钩子函数执行顺序可以归类为以下 4 部分: 加载渲染过程 ...