- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
Perl借用了 C、sed、awk、shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点。
Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件控制,每个语句以分号 (;) 结束
Perl 语言没有严格的格式规范,我们可以根据自己喜欢的风格来缩进。
我们可以在命令行中使用 -e 选项来输入语句来执行代码,范例如下:
$ perl -e 'print "Hello World\nHello DDKK.COM 弟弟快看,程序员编程资料站\n"'
输入以上命令,按回车后,输出结果为:
$ perl -e 'print "Hello World\nHello DDKK.COM 弟弟快看,程序员编程资料站\n"'
Hello World
Hello DDKK.COM 弟弟快看,程序员编程资料站
我们先将以下代码保存为 helloworld.pl 文件中:
#!/usr/bin/perl
=pod
file: helloworld.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
# 输出 "Hello, World"
print "Hello, world\n";
print "Hello DDKK.COM 弟弟快看,程序员编程资料站\n";
代码中**/usr/bin/perl** 是 perl 解释器的路径。
在执行该脚本前要先确保文件有可执行权限,我们可以先将文件权限修改为 0755 :
$ chmod 0755 hello.pl
然后使用 perl hello.pl 运行我们的脚本,输出如下
$ perl helloworld.pl
Hello, world
Hello DDKK.COM 弟弟快看,程序员编程资料站
print 也可以使用括号来输出字符串,以下两个语句输出相同的结果:
print("Hello, world\n");
print "Hello, world\n";
perl 代码可以放在一个文本文件中,以 .pl、.PL 作为扩展名
推荐使用 .pl 作为扩展名
文件名可以包含数字,符号和字母,但不能包含空格,可以使用下划线(_)来替代空格
下面是一些合法的简单的 Perl 文件名:
hello_world.pl
52perl.pl
hello.pl
520.pl
注释可以让我们的的程序易读,这是好的编程习惯
Perl 中的注释分为单行注释和多行注释
perl 单行注释的方法为在语句的开头用字符 #,如:
# 这一行是 perl 中的注释
perl 也支持多行注释,最常用的方法是使用 POD(Plain Old Documentations) 来进行多行注释。
语法格式如下:
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
# 输出 "Hello, World"
print "Hello, world\n";
print "Hello DDKK.COM 弟弟快看,程序员编程资料站\n";
=pod 注释
这是一个多行注释
这是一个多行注释
这是一个多行注释
这是一个多行注释
=cut
运行以上范例,输出结果为:
$ perl mail.pl
Hello, world
Hello DDKK.COM 弟弟快看,程序员编程资料站
多行注释必须按照以下格式来
1、 =pod、=cut只能在行首;
2、 以=开头,以=cut结尾;
3、 =后面要紧接一个字符,=cut后面可以不用;
Perl 解释器会忽略空白符,也就不会关心有多少个空白,因此以下程序也能正常运行:
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
# 输出 "Hello, World"
print "Hello, world\n";
print "Hello DDKK.COM 弟弟快看,程序员编程资料站\n";
运行以上范例,输出结果为:
$ perl mail.pl
Hello, world
Hello DDKK.COM 弟弟快看,程序员编程资料站
但是如果空格和分行出现在字符串内,则会原样输出:
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
print "Hello,\n\t world\n";
print "Hello DDKK.COM 弟弟快看,程序员编程资料站\n";
运行以上范例,输出结果为:
$ perl main.pl
Hello,
world
Hello DDKK.COM 弟弟快看,程序员编程资料站
所有类型的空白如:空格,tab ,空行等如果在引号外解释器会忽略它,如果在引号内会原样输出
perl 中的字符串是使用 单引号或者双引号引起来的,如下所示:
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
print "Hello, world\n";
print 'Hello, DDKK.COM 弟弟快看,程序员编程资料站\n'
输出结果如下:
$ perl main.pl
Hello, world
Hello, DDKK.COM 弟弟快看,程序员编程资料站\n
从结果中我们可以看出 : 双引号 \n 输出了换行,而单引号没有
双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出
这几乎所有语言的通用规则
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
$num = 17;
print "num = $num\n";
print 'num = $num\n';
输出结果如下:
$ perl main.pl
num = 17
num = $num\n
Here 文档又称作 heredoc、hereis、here-字串 或 here-脚本 ,是一种在命令行 shell(如 sh、csh、ksh、bash、PowerShell 和 zsh )和程序语言(像 Perl、PHP、Python 和 Ruby )里定义一个字串的方法
heredoc 使用规则:
1、 必须后接分号,否则编译通不过;
2、 END可以用任意其它字符代替,只需保证结束标识与开始标识一致;
3、 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符);
4、 开始标识可以不带引号号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号;
5、 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法;
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
$num = 17;
$var = <<"EOF";
这是一个 Here 文档范例,使用双引号。
可以在这输如字符串和变量。
例如:a = $num
EOF
print "$var\n";
$var = <<'EOF';
这是一个 Here 文档范例,使用单引号。
例如:num = $num
EOF
print "$var\n";
执行以上程序输出结果为:
$ perl main.pl
这是一个 Here 文档范例,使用双引号。
可以在这输如字符串和变量。
例如:a = 17
这是一个 Here 文档范例,使用单引号。
例如:num = $num
如果我们需要输出一个特殊的字符,可以使用反斜线(\)来转义,例如输出美元符号( $
)
#!/usr/bin/perl
=pod
file: mail.pl
author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
Copyright © 2015-2065 www.ddkk.com. All rights reserved.
=cut
$result = "DDKK.COM 弟弟快看,程序员编程资料站 \"DDKK.COM 弟弟快看,程序员编程资料站\"";
print "$result\n";
print "\$result\n"
运行以上脚本,输出结果如下:
$ perl main.pl
DDKK.COM 弟弟快看,程序员编程资料站 "DDKK.COM 弟弟快看,程序员编程资料站"
$result
Perl 程序中使用的变量名,常量名,函数名,语句块名等统称为标识符。
Perl 中的标识符语法格式如下
$
num 与 $
Num 表示两个不同变量在此处回答的另一个问题中,我发现了以下 JavaScript代码: function _dom_trackActiveElement(evt) { if (evt && evt.target)
if (A == 0) OR (B == 0) 怎么说? 最佳答案 只是为了讽刺: if (A === 0 || B === 0) 关于语法,我们在Stack Overflow上找到一个类似的问题:
var ret = [] ,xresult = document.evaluate(exp, rootEl, null, X
我一直在寻找一些类似于下例的 JavaScript。有人可以解释一下吗,因为我以前从未见过这样编写的 JavaScript。 “SomethingHere”和冒号代表什么?我习惯于看到函数 myFun
这是我的程序: delimiter // drop procedure if exists migContactToActor; create procedure migContactToActor(
我遇到了一个问题。我一直在使用 gcc 编译/汇编我的 C 代码一段时间,并且习惯了阅读 Intel 汇编语法。我在生成程序集文件时使用了 -masm=intel 标志。 但是最近因为公司迁移,拿到了
自上而下和自下而上语法有什么区别?举个例子就太好了。 最佳答案 首先,语法本身不是自上而下或自下而上的,解析器是(尽管有些语法可以被其中一个解析,但不能被另一个解析)。 从实践的角度来看,主要区别在于
我知道这是草率的代码,但它是: display dialog ("Start Screensaver. Please type: matrix, coffee, waffles, star, wate
这个问题已经有答案了: Giving name to a loop (6 个回答) 已关闭 8 年前。 我见过这个字符在 C# 中使用,就像 Java 中的扩展一样,但最近我在代码中发现了这个 loo
我正在尝试编写一个函数来检查字符串是否为回文,但我认为在使用字符串指针时存在一些错误。这段代码有什么问题? #include #include #define MAX 1000 int IsPalin
所以在this question我询问了一些 Javascript 是如何被压缩的。问题已得到解答,但以下片段让我非常困惑,以至于我不得不问另一个问题。在这里: for (Y = 0; $ = 'zx
假设我有一个接受这些参数的函数。 int create(Ptr * p,void * (*insert)(void *, void *)) { //return something later } 结
这个问题已经有答案了: Bitwise '&' operator (6 个回答) 已关闭 5 年前。 我在代码中找到了这个,但我从未遇到过像 & 这样的事情,仅 && if ((code & 1) =
我在处理继承类及其中的构造函数和方法的语法时遇到了问题。 我想实现一个类日期和一个子类 date_ISO,它们将按特定顺序设置给定的日、月、年,并通过一种方法将其写入字符串。我觉得我的基类日期工作正常
我正在尝试通过存储过程填充表,如下所示: SET @resultsCount = (SELECT COUNT(*) FROM tableA); SET @i = 0; WHILE @i THEN
谁能解释一下下面代码中的“<<”? mysql test<
刚刚开始学习 MySQL,这是一个菜鸟问题,也是我在 StackOverflow 上的第一个问题。 假设我有 12 个订单状态,我想从其中的 5 个中选择总计。我会使用: SELECT SUM(tot
我的编程背景是在学校学过一点Java。由于某些原因,JavaScript 语法往往让我感到困惑。下面的 JavaScript 代码是一种我不知道如何构成的语法模式: foo.ready = funct
我正在阅读 javascript 源代码,并且我以前没有编写过 javascript。我对它的一些语法感到困惑。 $(function () { window.onload=function
我什至不知道如何命名我想要的东西。那么让我举个例子来解释一下。 虽然火狐使用textContent,但其他浏览器支持innerText属性。顺便说一句,如果我使用了错误的术语,请纠正我。无论如何,到目
我是一名优秀的程序员,十分优秀!