Perl是一种动态解释型的脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting 以及很多其他编程語言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。
2000年开始,拉里·沃尔着手开发Perl 6来作为Perl的后继,Perl 6语言的语法有很多转变,也被视为Perl家族中的另一个语言(Perl 6于2019年更名为Raku)。目前,Perl语言家族包含两个分支Perl 5以及Perl 6。
Perl语言应用广泛,涵盖CGI、图形编程、系统管理、网络编程、金融、生物等领域。由于其灵活性,Perl被称为脚本语言中的瑞士军刀。鉴于Perl在实际工程应用中广泛使用,MacOS,Linux,FreeBSD等现代化操作系统默认安装Perl。
Perl原名pearl,但是在这个语言正式发表前,拉里·沃尔发现已经有个语言“pearl”,便将这个语言的名字改成Perl。对于Perl 这四个字母,有一些解释,包括充满幽默感的“Pathologically Eclectic Rubbish Lister”。 “Practical Extraction and Report Language”曾经出现在很多有关Perl的资料里,包括官方的主页。不过事实上这个长名字是后来凑出来的。它的名字第一个字母大写(Perl)时就指这个编程语言,无大写字母(perl)时就指它的编译器。将Perl写成“PERL”是不适当的,因为它并非一个缩写词。
Perl 语言的中心思想可以集成为一句话「TMTOWTDI」:
There's More Than One Way To Do It.(不只一种方法來做这件事。)
Perl 的作者 Larry Wall 建议可以把这个缩写词念成「Tim Toady」。
另一个 Perl 程序员常常想起的 Perl 俗语是:
Easy things should be easy, and hard things should be possible.
Perl骆驼是O'Reilly设计给Perl语言的图标。它也是一种黑客的象征,出现在某些T-shirt和其他衣服标签上。
O'Reilly拥有此图标的商标,并且宣称,唯有在捍卫「符号之完整性」时,才会行使其法律上的权力。O'Reilly允许此商标在非商业目的之前提下被使用,并同时供了 Programming Republic of Perl 的图像以及 Powered by Perl 的按钮图。然而,骆驼其实从未被考虑成为 Perl 的官方识别符号,真要说有的话,其识别符号其实是洋葱。
为了实现这样的目标,并且又因为 Larry Wall 本人也是一个语言学家,他设计Perl语言时使用了很多语言学的思维。相比 C、Pascal 这样的“高级”语言而言,Perl语言直接提供泛型变量、动态数组、Hash表等更加便捷的编程元素。Perl 具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal 等语言中分别借鉴了语法规则,从而提供了许多冗余语法。使得程序员可以忽略计算机内部数据存储、类型、处理方法、运算规则、甚至内存越界等等的细节,而将思考中心放在所需要的程序逻辑上。就这一点而言,很多 Perl 程序员认为目前只有 Perl、Python等泛型语言才能称为“高级”语言,而 C、Pascal 甚至 C++ 这些只能称为“中高级”语言而已。可以说,在统一变量类型和掩盖运算细节方面,Perl 做得比 Python 更为出色。
由于从其他语言大量借鉴了语法,使得从其他编程语言转到 Perl 语言的程序员可以迅速上手写程序并完成任务,这使得 Perl语言是一门容易用的语言。但问题是这样写出来的“类xx语言”的 Perl 程序对不熟悉这种语言的程序员却如同天书,这使得 Perl 语言易写不易读。
也正是因为 Perl 的灵活性和“过度”的冗余语法,也因此获得了 write-only 的“美誉”,因为许多 Perl 程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍。 但 Perl 同样可以将代码书写得像 Python 或 Ruby 等语言一样优雅。
perl语言 1. 基本语法 perl 语言是用于文本处理语言,它代表实用提取和报告语言,可在各种平台运行(windows unix等) 1.环境搭建与使用 安装perl 软件 perl -v # 检查版本信息 从官网下载perl 软件后,直接将程序添加到环境变量即可。 注意事项(链接:https://www.perl.org/get.html): Perl 在 Window 平台上有 Acti
一、Perl的释义 Perl 是 Practical Extraction and Report Language 的缩写,可翻译为实用报表提取语言 过程:最初的设计者为拉里·沃尔(Larry Wall),先想出单词,再解释,所以无论哪种解释均可! 一般:大写的 P是指语言本身,而小写的 p是指程序运行的解释器。 优点:Perl借
什么是Perl? Perl是一个能用来完成大量不同任务的编程语言。可以用来解开一个文件并打印一份报告,或者将一个文本文件转换成另一种格式。Perl为相当复杂的问题提供了一系列的工具,包括系统编程。 用Perl写的程序叫脚本(Perl scripts),而perl程序(perl program)通常是指名字叫做perl的程序,它是用来执行脚本的。 Perl是解释型(不是编译型)语言。这样
1. Path::Class模块 虽然File::Spec模块能很好地处理不同系统上的文件名规则,但操作界面偏底层,不够高阶。而perl自带的Path::Class模块则提供了更为友好的操作界面 my $dir = dir(qw(Users fred lib)); my $subdir = $dir->subdir('perl5'); # Users/fred/lib/perl5 my $pare
Perl被称为"骆驼"语言。发明perl的Larry Wall就说过:“Perl可能不好看或者不好闻,但是它能完成任务”。 Perl是文本处理语言,它最初就是为了这个目的设计的。 Perl是网络编程语言,它内置了socket/client-server协议。 Perl是系统管理语言,全球网络很多服务器上就运行着它的脚本。很多时候是单行的脚本。 Perl是Web脚本编写语言。至今它仍然是最流行的几种
perl的命令行参数保存在@ARGV中,而<>以@ARGV为默认参数。当然可以对@ARGV进行赋值操作,以改变<>的输入文件。命令行的当前执行文件名保存在$0中。 当@ARGV为空的时候即命令行输入为./zzbds.pel(执行文件名) 时,<>的意思为从STDIN中输入,以文件结束符为结尾。 此时: (while(<>)) = (while(my @enterfile
Perl中有很多种特殊变量,就像awk一样,它们用于文本处理。像什么记录输入/输出分隔符之类的。在Perl中,$/意即输入记录分隔符,代表着一个记录的结束和开始。 通常我们使用钻石操作符<>来从文件句柄中读取所需要的数据,默认它每次只读取一行?那么它是如何区分新记录的呢?这就是的$/的作用。当<>遇到$/所定义的分隔符时,就认为这是一个行的结束。而默认的$/值就是换行符(\n),当然不同系统之间默
12.1. 符号->,=>和::分别表示什么意思? ‘- >’符号是“插入式解引用操作符”(infix dereference operator)。换句话说,它是调用由引用传递参数的子程序的方法(当然,还有其它的作用)。正如我们上面所提到的,在调用Perl/Tk的函数的时候,大部分参数都是通过引用传递的。Perl中的‘->’功能就和它们在C或C++中一样。(大部分原始的组件都是Tk中的Perl
Perl 最初的设计者为 拉里·沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。 Perl 一般被称为“实用报表提取语言”(PracticalExtraction andReportLanguage),虽然有时被称做“病态折中垃圾列表器”(PathologicallyEclectic Rubb
读取文件 文件以读取方式打开 例子:读取in.txt文件,如果读取失败,则打印“con not open file1",并结束。 open(file1,"< in.txt") or die "con not open file1"; 格式 < 表示读取,>表示写入,>>表示追加 open(文件句柄,"< 文件名.txt") or die "con not open file1"; 文件以写入方
perl调用perl文件可以使用两种方法: 1.require "xxx.pl"; 2.use xxx.pm; 加入require或者use在perl中相当于将文件xxx.pl/pm整个文件都添加到调用它的文件中; 例如: gettime.pl #!/usr/bin/perl print "gettime is 2011-07-25 14:40:10\n"; showtime.pl #!/us
Perl - 如何查看Perl模块路径 前言 一、如何查看Perl模块路径? $INC数组存放了模块路径, [thesre@centos8 ~]$ perl -e 'print "$_\n" foreach ( @INC );' /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share
安装Perl 很多系统平台上已经默认安装了 perl,我们可以通过以下命令来查看是否已安装: $ perl -v 若返回perl的版本号则说明系统已经安装好perl This is perl 5, version 34, subversion 0 (v5.34.0) built for x86_64-linux-gnu-thread-multi (with 50 registered patch
perl的特殊变量还有很多的,例如常用的还有@_、@ARGV、$ARGV、%INC、%ENV等。 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程ID $% 当前输出通道的当前页号 $& 与上个格式匹配的
Perl综合典藏网(Comprehensive Perl Archive Network, CPAN) 1. 寻找模块 perl的模块有2种来源 随perl发行版本一同打包的 要从CPAN下载 可以在CPAN Search网站或MetaCPAN网站上搜索那些没有随perl发布的模块 在开始寻找模块前,先检查本地是否已经安装该模块 $ perldoc Digest::SHA 如果查看未安装的模块,
#!/usr/bin/perl #require "gettime.pl"; print "************************call gettime.pl begin************************ \n"; my $rep = "SELECT HXJYLSH,ZJYLSH,BCXH,JYRQ,JYRQ FROM EASTBS.JYLS WHERE ETDM
#! /usr/bin/perl @lines= `perldoc –u –f atan2`; foreach(@lines){ s//w<([^>]+)//U$1/g; print; } 第一行是#!这一行,#!行和程序的可移植性相关,需要找到每台机器的存放地点。幸运的是,通常都被放在/usr/bin/perl 或/usr/local/bin/perl 中。 如果不是
print "What is your name? "; chomp($name=<STDIN>); print "Welcome, $name, are you ready to learn Perl now?"; chomp ($response=<STDIN>); $response=lc($response); if($response eq "yes" or $response eq "
Perl 教程,Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 “实用报表提取语言”。Perl 是高级、通用、直译式、动态的程序语言。Perl 最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。Perl 借用了C、sed、awk、shell脚本以及很多其他编程语言的特性。Perl 最重要的特性是Perl
1. 哈希切片 对哈希成员可以使用哈希切片(hash slice)的方式进行检索 my @three_scores = ($score{"barney"}, $score{"fred"}, $score{"dino"}); my @three_scores = @score{ qw/ barney fred dino / }; 切片一定是列表,因此哈希切片也是用@符号来表示 为什么提到哈希的时候
perl 脚本语言 perl概述: perl是解释语言,无需在执行前编译成机器能理解的代码。 几乎能在任何平台上运行。 larry wall编写perl来管理 散布在网络中的日志文件 和报表。 最初用于: 操作文件中的文本, 从文件中提取数据和编写报表 经发展可用于: 操作进程 执行网络人物 处理web页面 与数据库通信 分析科学数据 获取per
1. 使用帮助手册 如果你是在 Linux/Unix 下,那么 Man 给我们准备好了各色点心,用 man 加上下面中的类别名就能查阅到对应的帮助,如 man perldata 手册页 内容 perl 有些什么 perl 手册页 perldata 数据类型 perlsyn 语法 perlop 操作符和优先级 perlre 正则表达式 perlvar 预定义变量 perlsub 子过程 prelf
本文向大家介绍简述解释型和编译型编程语言相关面试题,主要包含被问及简述解释型和编译型编程语言时的应答技巧和注意事项,需要的朋友参考一下
主要内容:编译型语言,解释型语言,总结通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令,也就是由 0 和 1 组成的机器码,能被计算机直接识别并执行。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 W
本文向大家介绍什么是Perl编程语言?,包括了什么是Perl编程语言?的使用技巧和注意事项,需要的朋友参考一下 Perl是一种通用编程语言,最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发,网络编程,GUI开发等。 Perl是一种稳定的跨平台编程语言。 尽管Perl并不是正式的缩写,但很少有人将其用作实用提取和报告语言。 它用于公共和私营部门的关键任务项目。 Perl是一种开放
问题内容: 过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。 我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行? 问题答案: Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理
我有以下问题:-创建了几个模块来实现类,并用-我的Android应用程序正在使用检索这些类。但是由于某种原因,没有在
我试图将@Age constraint的实现从java复制到Kotlin,我复制了Java代码库,并使用IDE将其转换为Kotlin代码。 Java代码 Intellij生成的对应静态编程语言代码 Kotlin代码导致错误声明“注释类中不允许成员”。将注释类List从Age中移出是否可以解决此问题?还有其他方法可以在另一个类中实现注释类吗? 非常感谢。
翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码? 如果是后者,这是否意味着解释语言与介绍集没有关系? 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?
本文向大家介绍动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍,包括了动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍的使用技巧和注意事项,需要的朋友参考一下 关于如题这几个概念,大部分人应该比较熟悉,但是我昏了好久,所以写下来加深印象。 1. 动态语言 又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如